วันเสาร์ที่ 1 ธันวาคม พ.ศ. 2555

บทที่ 9 - โครงสร้างสตรักเจอร์

บทที่ 9 - โครงสร้างสตรักเจอร์   

โครงสร้างสตรักเจอร์ (Structure) 

 สตรักเจอร์ เป็นวิธีการเก็บตัวแปรหลากชนิดให้อยู่เป็นกลุ่มก้อนเดียวกัน ทำให้สามารถแยกโปรแกรมออกเป็นหน่วย (Modular Programming) ซึ่งแก้ไขได้ง่ายเพราะสามารถแยกฟังก์ชันและตัวแปรออกเป็นหน่วยๆ ซึ่งก็เป็นประโยชน์ในการสร้างฐานข้อมูลด้วย

 การตั้งต้นสร้างสตรักเจอร์ สามารถทำได้หลายรูปแบบดังตัวอย่างต่อไปนี้  

1) การใช้ คำสั่ง struct สร้างตัวแปรชนิด  student_a ผ่านตัวแปร student

struct student 

{ 

   char *first; 

   char *last; 

   char SSN[9]; 

   float gpa; 

   char **classes; 

}; 
struct student student_a; 2) การใช้ คำสั่ง struct สร้างตัวแปรชนิด student_a โดยตรง struct
{ 

    char *first; 

    char *last; 

    char SSN[10]; 

    float gpa; 

    char **classes; 

} student_a; 
3) การใช้ คำสั่ง typedef struct เพื่อสร้างตัวแปรชนิด student_a ผ่านตัวแปร student typedef struct
{ 

    char *first; 

    char *last; 

    char SSN[9]; 

    float gpa; 

    char **classes; 

} student; 



student student_a;
การกำหนดชนิดตัวแปร ทำได้โดยใช้คำสั่ง typedef ตามหลักการใช้งานดังนี้ typedef type name (typedef ชื่อของชนิดตัวแปร ชื่อที่ใช้เรียกชนิดตัวแปรจริง) ตัวอย่าง:
typedef int INTEGER;

  INTEGER x;  /* x คือตัวแปรตระกูล INTEGER */



  typedef char *STRING;

  STRING sarray[10];  

/* sarray คือตารางอาเรย์ ของ char* ซึ่งเทียบได้กับการประกาศว่า 

char *sarray[10] */
ในโครงสร้างตัวแปรที่อยู่ในรูป structure นั้นประกอบด้วยตัวแปรที่เกี่ยวข้องในลักษณะเดียวกับตารางอาเรย์ แม้จะไม่ใช้ตัวแปรประเภทเดียวกัน โดยจะแบ่งตัวแปรออกเป็น field โดยที่กลุ่มตัวแปรใน structure จะถือว่าเป็นส่วนหนึ่งของหน่วยใหญ่หน่วยเดียวกันดังที่แสดงในภาพที่ 8.1 ส่วนการเปรียบเทียบความแตกต่างระหว่าง ตารางอาเรย์และตัวแปร struct ที่มีตัวแปรที่เป็นตารางอาเรย์ จะแสดงให้เห็นในภาพที่ 8.2
5542
การเรียกใช้งาน สตรักเจอร์ โดยปกติการสร้างสตรักเจอร์ ทำได้โดยใช้คำสั่ง typedef และ struct ซึ่งโครงสร้างภายในของสตรักเจอร์ จะประกอบด้วยตัวแปรต่างๆ ซึ่งแยกออกเป็น field ตัวแปรชนิดต่างๆ และในแต่ละ field จะมีการกำหนดพื้นที่หน่วยความจำ จนเพียงพอสำหรับแต่ละ field ดังตัวอย่างต่อไปนี้
typedef struct {

  Type1 FieldName1;

  Type2 FieldName2;

  Type3 FieldName3;

  /* as needed */

} VarName;
VarName คือชื่อชนิดตัวแปรสตรักเจอร์ทั้งหมด นี่คือตัวอย่างการประกาศใช้ตัวแปร struct ชนิด student_t เพื่อบันทึกข้อมูลนักเรียน พร้อมตัวอย่างการกำหนดตัวแปร ชนิด student_t ซึ่งสามารถทำได้อย่างตัวแปรทั่วไป เช่นเดียวกับ int float
#define   MAX_LEN  12      /*  Length of name  */

typedef   struct  {

   char      name[MAX_LEN];

   int      id;

   float     gpa;

   char major[10];

}  student_t;



student_t   s;

student_t  stu1, stu2, stu3;
การเข้าถึง ตัวแปร field ภายในตัวแปร struct ทำได้โดยการใช้ จุด (.)แล้วตามด้วยชื่อ field ดังตัวอย่างกรณีการเข้าถึงตัวแปร ชนิด DATE ที่จะแสดงให้เห็นดังต่อไปนี้ และผลที่ได้จะแสดงให้เห็นในภาพที่ 8.3 หลักการเข้าถึงตัวแปร struct: VarName.FieldName typedef struct
{

  int month, day, year;

} DATE;



void main() {

  DATE d1;



  d1.month = 12;

  d1.day = 2;

  d1.year = 1970;

}
5543

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

แนะนำ ภาษา C++ เบื้องต้น

แนะนำ ภาษา C++ เบื้องต้น   ประวัติภาษา C , C++ ค . ศ . 1970 มีการพัฒนาภาษา B โดย Ken Thompson ซึ่งทำ งานบนเครื่อง DEC PDP-7 ซึ่ง ...