| วันนี้เป็นเรื่องโครงสร้างช้อมูล ถ้าเราเคยใช้ระบบ record ของฐานข้อมูล DBASE, Foxpro หรือ ฐานข้อมูลอื่นๆ จะเห็นโครงสร้างข้อมูล จะมีรายละเอียดย่อยที่เราเรียกว่า ฟิลด์ และการใช้งานในลักษณะนั้น สามารถทำได้แบบนี้ |
| #include <stdio.h>#include <conio.h> typedef struct TRecord //<------ วิธีกำหนดโครงสร้าง { //<--- ขอบเขตของโครงสร้าง char data[80]; //<----- รายการย่อยเรียกว่า ฟิลด์ชื่อ data}; //<--- สิ้นสุดขอบเขตของโครงสร้าง int main( ) { struct TRecord rec1; //<------ ตัวแปรโครงสร้างของ TRecord ชื่อ rec1 return 0;} |
| Sawasdee |
. . . . . . . .จากตัวอย่างข้างบน วิธีการกำหนดโครงสร้างให้ทำแบบนี้typedef struct TRecord //<------ วิธีกำหนดโครงสร้างการกำหนดตัวแปรโครงสร้างให้ทำแบบนี้ struct TRecord rec1; //<------ ตัวแปรโครงสร้างของ TRecord ชื่อ rec1การใช้งานฟิลด์ในโครงสร้างให้ทำแบบนี้ rec1.data //<------- ให้ใส่จุดไช่ปลาแล้วตามด้วยชื่อฟิลด์ดูแล้วไม่ยากเลยใช่ไหม กลับไปดูใหม่ได้นะครับ ต่อไปเป็นโครงสร้างแบบซ้อน |
| #include <stdio.h>#include <conio.h> typedef struct TSubRecord { char data[80]; //<----- รายการย่อยเรียกว่า ฟิลด์ชื่อ data}; typedef struct TRecord //<------ วิธีกำหนดโครงสร้าง { //<--- ขอบเขตของโครงสร้าง char data[80]; //<----- รายการย่อยเรียกว่า ฟิลด์ชื่อ data}; //<--- สิ้นสุดขอบเขตของโครงสร้าง int main( ) { struct TRecord rec1; //<------ ตัวแปรโครงสร้างของ TRecord ชื่อ rec1} |
| SawasdeeSawasdee2 |
. . . . . . . .จากตัวอย่างข้างบน เป็นการกำหนดฟิลด์แบบโครงสร้าง แต่การเข้าถึงฟิลด์ก็เหมือนเดิม คือ ต้องมีจุดไข่ปลาขั้นแล้วตามด้วยชื่อฟิลด์ที่จะใช้งานการใช้งานฟิลด์ในโครงสร้างแรกrec1.data //<------- ให้ใส่จุดไช่ปลาแล้วตามด้วยชื่อฟิลด์การใช้งานฟิลด์ในโครงสร้างที่สอง rec1.sub1.data //<------- ให้ใส่จุดไช่ปลาแล้วตามด้วยชื่อฟิลด์ไม่ยากอะไรใช่ไหม ลองเพิ่มฟิลด์สิครับ ไม่จำกัดรูปแบบ แต่อย่าลืมการอ้างถึงต้องมีจุดไข่ปลาเสมอ ลองดูอีกแบบนะครับ เป็นการกำหนดฟิลด์แบบต่างๆในโครงสร้าง |
| #include <stdio.h>#include <conio.h> typedef struct TSubRecord { char data[80]; //<----- รายการย่อยเรียกว่า ฟิลด์ชื่อ data}; typedef struct TRecord //<------ วิธีกำหนดโครงสร้าง { //<--- ขอบเขตของโครงสร้าง char data[80]; //<----- รายการย่อยเรียกว่า ฟิลด์ชื่อ data}; //<--- สิ้นสุดขอบเขตของโครงสร้าง int main( ) { struct TRecord rec1;} |
| Sawasdee100 200 Sawasdee2 |
สรุป ได้อะไรบ้าง
typedef struct TSubRecord{char data[80]; //<----- รายการย่อยเรียกว่า ฟิลด์ชื่อ data}; typedef struct TRecord //<------ วิธีกำหนดโครงสร้าง { //<--- ขอบเขตของโครงสร้าง char data[80]; //<----- รายการย่อยเรียกว่า ฟิลด์ชื่อ data}; //<--- สิ้นสุดขอบเขตของโครงสร้าง strcpy( rec1.data, "Sawasdee" ); rec1.value1 = 100; rec1.value2 = 200; strcpy( rec1.sub1.data, "Sawasdee2" ); //<----- copy ข้อความให้ฟิลด์ data ของ sub1 |
| . . . . . . . .วันนี้ออกจะสั้นเพราะเป็นเนื้อหาที่ไม่ซับซ้อนมากนัก แต่ควรจะลองเขียนบ่อยๆ เพราะรูปแบบโครงสร้าง มีใช้ในโปรแกรมทุกโปรแกรม ต่อไปจะเข้าเรื่อง ตัวแปร pointer นะครับ หลังจากนั้นจะพาเขียนกราฟฟิกครับ ใกล้แล้วๆ |