โครงสร้าง (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); } }
—–
บทพิสูจน์ความแกร่งแห่งเพชรแท้
ความแน่วแน่ที่จะไป…ให้ถึงฝัน
จะย่อท้อหวั่นไหวทำไมกัน
หวังและวันแห่งเส้นชัย…ไม่ไกลเกิน
นิรนาม
No Comments