CProgramming

บทที่ 7 โครงสร้าง

โครงสร้าง (Struct)

struct เป็นการประกาศตัวแปรชนิดหนึ่งที่สามารถเก็บข้อมูลได้หลายประเภทหรือบางครั้งอาจเรียกข้อมูลประเภทนี้ว่า เรคอร์ท มีรูปแบบการประกาศตัวแปรดังต่อไปนี้

รูปแบบที่ 1

struct ชื่อโครงสร้าง{
   ชนิดข้อมูล  ชื่อตัวแปรสมาชิก;
   ชนิดข้อมูล  ชื่อตัวแปรสมาชิก;
   ชนิดข้อมูล  ชื่อตัวแปรสมาชิก;
   …
};
สามารถเรียกใช้ตัวแปรโครงสร้างได้ดังนี้
struct ชื่อโครงสร้าง ชื่อตัวแปรโครงสร้าง;

รูปแบบที่ 2

struct ชื่อโครงสร้าง{
   ชนิดข้อมูล  ชื่อตัวแปรสมาชิก;
   ชนิดข้อมูล  ชื่อตัวแปรสมาชิก;
   ชนิดข้อมูล  ชื่อตัวแปรสมาชิก;
   …
} ชื่อตัวแปรโครงสร้าง;

รูปแบบที่ 3

typedef struct {
   ชนิดข้อมูล  ชื่อตัวแปรสมาชิก;
   ชนิดข้อมูล  ชื่อตัวแปรสมาชิก;
   ชนิดข้อมูล  ชื่อตัวแปรสมาชิก;
   …
} ชื่อโครงสร้าง;
สามารถเรียกใช้ตัวแปรโครงสร้างได้ดังนี้
ชื่อโครงสร้าง  ชื่อตัวแปรโครงสร้าง;

ลองบันทึกผลลัพธ์จากโปรแกรมตัวอย่างต่อไปนี้เพื่อความเข้าใจดูนะครับ

ตัวอย่างที่ 53

#include"stdio.h"
int main(){
   struct custom{
      int id;
      char name[20];
      float price;
   }; 
   struct custom a = {10,"hello",150.75};
   printf("id = %d\nname = %s\nprice = %f\n",a.id,a.name,a.price);
   return 0;
}

ตัวอย่างที่ 54

#include"stdio.h"
int main(){
   struct custom{
      int id;
      char name[20];
      float price;
   };
   struct custom b;
   scanf("%d %s %f",&b.id,&b.name,&b.price);
   printf("id = %d\nname = %s\nprice = %f\n",b.id,b.name,b.price);
   return 0;
}

ตัวอย่างที่ 55

#include<stdio.h>
int main(){
   struct custom{
      int id;
      char name[20];
      float price;
   }c;
   scanf("%d %s %f",&c.id,&c.name,&c.price);
   printf("id = %d\nname = %s\nprice = %f\n",c.id,c.name,c.price);
   return 0;
}

ตัวอย่างที่ 56

#include<stdio.h>
int main(){
   typedef struct {
      int id;
      char name[20];
      float price;
   }custom;
   custom d;
   scanf("%d %s %f",&d.id,&d.name,&d.price);
   printf("id = %d\nname = %s\nprice = %f\n",d.id,d.name,d.price);
   return 0;
}

ผมเชื่อว่าทุกคนเคยแพ้ ผมเชื่อว่าทุกคนเคยล้มเหลว

แต่คนแพ้ไม่ใช่คนที่ล้มเหลว

คนล้มเหลวคือ…คนที่ล้มเลิกต่างหาก

บิลล์ เกตส์

ตัวอย่างที่ 57

#include"stdio.h"
#define SIZE 3
void inputToArrayOfStructures(struct student_rec [],int );
struct student_rec{
    char id[14];
    char name[30];
    int age;
    float gpa;
};
int main(){
    struct student_rec student[SIZE];
    int i;
    inputToArrayOfStructures(student,SIZE);
    for(i=0;i<SIZE;i++){
        printf("Student %2d, ID: %s, name: %s, Age : %2d, GPA : %4.2f\n",i+1,student[i].id, student[i].name, student[i].age, student[i].gpa);
    }
}

void inputToArrayOfStructures(struct student_rec rec[],int size){
    int i;
    for (i=0;i<size;i++){
        printf("Data for a student number %d\n",i+1);
        printf("ID: "); scanf("%s",rec[i].id);
        printf("Name: "); scanf("%s",rec[i].name);
        printf("Age: "); scanf("%d",&rec[i].age);
        printf("GPA: "); scanf("%f",&rec[i].gpa);
    }
}

ตัวอย่างที่ 58

#include<stdio.h>
#define SIZE 3
struct student_rec{
    char id[14];
    char name[30];
    int age;
    float gpa;
};

void inputToAStructures(struct student_rec *rec){
        printf("ID: "); scanf("%s",rec->id);
        printf("Name: "); scanf("%s",rec->name);
        printf("Age: "); scanf("%d",&rec->age);
        printf("GPA: "); scanf("%f",&rec->gpa); 
}

int main(){
    struct student_rec student[SIZE];
    int i;
    for(i=0;i<SIZE;i++){
        printf("Data for student number %d\n",i+1);
        inputToAStructures(&student[i]);
    }
    for(i=0;i<SIZE;i++){
        printf("Student %2d, ID: %s, name: %s, Age : %2d, GPA : %4.2f\n",i+1,student[i].id, student[i].name, student[i].age, student[i].gpa);
    }
}

—–

บทพิสูจน์ความแกร่งแห่งเพชรแท้

ความแน่วแน่ที่จะไป…ให้ถึงฝัน

จะย่อท้อหวั่นไหวทำไมกัน

หวังและวันแห่งเส้นชัย…ไม่ไกลเกิน

นิรนาม

บทที่ 4 อาร์เรย์และสตริง (Array and String) – Array (Prev Lesson)
(Next Lesson) บทที่ 5 ฟังก์ชัน
Back to CProgramming

No Comments

Give a comment