ตัวแปรแบบโครงสร้าง
ตัวแปรแบบโครงสร้าง (Structures) เก็บข้อมูลสมาชิกหลายๆ ตัวรวมกันอยู่ภายใต้ชื่อเดียวกัน ข้อมูลแต่ละตัวอาจเป็นข้อมูลที่มีชนิดต่างกัน เช่น char, int, float เป็นต้น เหมือนหรือต่างจากตัวแปร array อย่างไร ???
การประกาศตัวแปรโครงสร้าง struct [ชื่อโครงสร้าง] { ชนิดตัวแปร ชื่อตัวแปร[,ชื่อตัวแปร,...]; … } ชื่อตัวแปรโครงสร้าง[,…] ;
ตัวอย่างการประกาศตัวแปรแบบโครงสร้าง struct { char name[20]; int height; int weight; } profile; ประกาศตัวแปรชื่อ profile เป็นตัวแปรประเภทโครงสร้างที่ ประกอบด้วยฟิลด์ 3 ฟิลด์ คือ name, height และ weight
ตัวอย่างการประกาศตัวแปรโครงสร้าง ชื่อโครงสร้าง struct catalog { char name[30]; char title[30]; char pub[20]; int year; } card; ประกาศตัวแปรชื่อ card ให้เป็นตัวแปรโครงสร้าง catalog ประกอบด้วยฟิลด์ 4 ฟิลด์ คือ name, title, pub และ year ชื่อตัวแปร
เปรียบเทียบการประกาศตัวแปรโครงสร้าง กับตัวแปรประเภทอื่น struct catalog { char name[30]; char title[30]; char pub[20]; int year; } card; int number;
การกำหนดค่าเริ่มต้น struct catalog { char name[30]; char title[30]; ชื่อตัวแปรโครงสร้าง = { ค่าเริ่มต้น1 [,ค่าเริ่มต้น2, ...] }; struct catalog { char name[30]; char title[30]; char pub[20]; int year; }; catalog card = {“Tom”, “Turbo C”, “ABC”, 2001};
การเข้าถึงสมาชิกแต่ละตัวในตัวแปรโครงสร้าง ชื่อตัวแปร.ชื่อฟิลด์ เช่น card.year = 2001;
พิจารณาการประกาศตัวแปรแบบโครงสร้างต่อไปนี้ พิจารณาการประกาศตัวแปรแบบโครงสร้างต่อไปนี้.. ตัวแปรที่ได้ สามารถเก็บข้อมูลหนังสือได้ครั้งละกี่เล่ม? struct catalog { char name[30]; char title[30]; char pub[20]; int year; }; catalog card; ตอบ: 1 เล่ม
ใช้ array เข้ามาช่วยแก้ปัญหา ถ้าหากต้องการเก็บข้อมูลแบบโครงสร้างจำนวนมาก ๆ เช่น เก็บข้อมูลหนังสือจำนวน 100 เล่ม จะต้องประกาศตัวแปรโครงสร้าง 100 ตัวหรือไม่ ??? ใช้ array เข้ามาช่วยแก้ปัญหา
การ Copy ข้อมูลประเภทโครงสร้าง a x y status struct player { int x,y; char status; } a,b; 10 20 ‘1’ b x y status a.x = 10; a.y = 20; a.status = '1'; 10 20 ‘1’ b = a;
ประกาศชื่อและตัวแปรโครงสร้างอย่างไรดี ??? struct player { char name[50]; int x, y; char career[6]; int life; } p1; เก็บข้อมูลผู้เล่นเกม 1 คน ซึ่งประกอบด้วย - ชื่อผู้เล่น - ตำแหน่งที่อยู่ตามแกน X - ตำแหน่งที่อยู่ตามแกน Y - รหัสอาชีพ 5 หลัก - ค่าพลังชีวิต ?
ประกาศชื่อและตัวแปรโครงสร้างอย่างไรดี ??? struct book { char author[50]; char name[50]; char pub[50]; int page; float price; } topten[10]; เก็บข้อมูลหนังสือขายดี 10 อันดับแรก ประกอบด้วย - ผู้แต่ง - ชื่อหนังสือ - สำนักพิมพ์ - จำนวนหน้า - ราคา ?
ประกาศโครงสร้างอย่างไรดี ??? struct s_list { int no; char p_code[14]; char p_name[50]; float price; int amount; } เก็บข้อมูลการขายสินค้า ประกอบด้วย - ลำดับที่ซื้อ - รหัสสินค้า - ชื่อสินค้า - ราคาต่อหน่วย - จำนวนหน่วยที่ซื้อ ?