8.5 ข้อมูลแบบโครงสร้างซ้อน  (nested  structures)
            บางครั้งเราสามารถประกาศข้อมูลแบบโครงสร้างซ้อนอยู่ภายในโครงสร้างได้ดังโปรแกรมตัวอย่างต่อไปนี้ 
            
โปรแกรมตัวอย่างที่  8.5 แสดงการประกาศข้อมูลแบบโครงสร้างซ้อนอยู่ภายในโครงสร้าง             
            
              
                
  | 
                
  | 
                  | 
                
  | 
                
  | 
              
                |   | 
                 
                    
                      /*             neststru.c              */ 
                      #include<stdio.h>                                                                      /*  บรรทัดที่  1       */ 
                        
#include<conio.h>                                                                     
 /*  บรรทัดที่  2       */ 
                        struct           
student                                                                       /* 
 บรรทัดที่  3       */ 
                        
{                                                                                                  
 /*  บรรทัดที่  4       */ 
                              char      
name[20];                                                                   
 /*  บรรทัดที่  5       */ 
                              int      
age;                                                                                 
 /*  บรรทัดที่  6       */ 
                        
};                                                                                              
 /*  บรรทัดที่  7       */ 
                              struct           
group                                                                          /* 
 บรรทัดที่  8       */ 
                        
{                                                                                                 /* 
 บรรทัดที่  9       */ 
                              struct           student  one;             /* nested structure  one */  /*  บรรทัดที่  10       */ 
                              struct           student  two;         /* 
     nested structure  two */   /*       บรรทัดที่  11  */ 
                      
};                                                                                                   /* 
 บรรทัดที่  12       */ 
                            struct           group  x = {                                               /*  บรรทัดที่  13       */ 
                        
            {"Kannikar",25},                                                                   
 /*  บรรทัดที่  14       */ 
                        
            {"Suraporn",32}                                                                   
 /*  บรรทัดที่  15       */ 
                        
      };                                                                                             
 /*  บรรทัดที่  16       */ 
                        void 
main(void)                                                                         
 /*  บรรทัดที่  17       */ 
                        
{                                                                                                  
 /*  บรรทัดที่  18       */ 
                        
      clrscr();                                                                                     /* 
 บรรทัดที่  19       */ 
                              printf("\n      Person One 
:\n");                                                       /*  
บรรทัดที่  20       */ 
                              printf("Name      = %s\n", 
x.one.name);                                        /*  บรรทัดที่  21   
    */ 
                              printf("Age      = %d\n", 
x.one.age);                                             /*  บรรทัดที่  
22 */ 
                              printf("\n Person Two      
:\n");                                                     /*  
บรรทัดที่  23 */ 
                              printf("Name      = %s\n", 
x.two.name);                                          /*  บรรทัดที่  24 
      */ 
                              printf("Age      = %d\n", 
x.two.age);                                            /*  บรรทัดที่  
25       */ 
                              printf("\n\nPress      any key back to 
program...");                         /*  บรรทัดที่  26       */ 
                        
      getch();                                                                                      
 /*  บรรทัดที่  27*/ 
                      
}                                                                                              /*
 บรรทัดที่  28       */ 
                     
 | 
                  | 
              
                  | 
                  | 
                  | 
              
ผลลัพธ์ที่ได้จากโปรแกรม 
            
คำอธิบายโปรแกรม 
                          จากโปรแกรมตัวอย่างที่   8.5  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ  ๆ ได้ดังนี้
                          การอ้างอิงสมาชิกภายในข้อมูลแบบโครงสร้างซ้อนก็ใช้วิธีการอ้างอิงเหมือนกับข้อมูลแบบโครงสร้างธรรมดา 
                          เช่น  บรรทัดที่  21  x.one.name  หมายถึง  
การอ้างอิงถึงตัวแปร  name   ผ่านตัวแปรโครงสร้าง   one  
และตัวแปรโครงสร้าง  x   ตามลำดับ  
                          หรือ  บรรทัดที่  24  x.two.name  หมายถึง  
การอ้างอิงถึงตัวแปร  name   ผ่านตัวแปรโครงสร้าง   two  
และตัวแปรโครงสร้าง  x   ตามลำดับ
 
ไม่มีความคิดเห็น:
แสดงความคิดเห็น