วันพุธที่ 9 กรกฎาคม พ.ศ. 2557

8.3 การอ้างอิงตัวแปรภายในข้อมูลแบบโครงสร้าง

8.3 การอ้างอิงตัวแปรภายในข้อมูลแบบโครงสร้าง
(accessing  structure  members)
            การอ้างอิงสมาชิกหรือตัวแปรภายในข้อมูลแบบโครงสร้าง  สามารถทำได้โดยเรียกชื่อตัวแปรโครงสร้าง  (struct_var)  ตามด้วยเครื่องหมาย  .  (period)  จากนั้นก็ตามด้วยชื่อตัวแปรภายในโครงสร้าง  (element_name)  หรือบางครั้งเรียกว่า  member_name

รูปแบบการอ้างอิงตัวแปรภายในโครงสร้าง

struct_var. member_name
            

เช่น  person.emp_name  หมายถึง  ชื่อพนักงาน
person.position  หมายถึง  ตำแหน่งของพนักงาน
person.salary  หมายถึง  เงินเดือนของพนักงาน
x.a, x.b, x.c  หมายถึง  ตัวแปร  a, b  และ  c  ตามลำดับ
(ให้ดูข้อมูลแบบโครงสร้างตัวอย่างที่  1  และ  2  ที่ผ่านมาประกอบความเข้าใจด้วย)
            เพื่อความเข้าใจเกี่ยวกับการประกาศข้อมูลแบบโครงสร้าง และการอ้างอิงสมาชิกภายในมากยิ่งขึ้น ให้ศึกษาจากโปรแกรมตัวอย่างดังต่อไปนี้
โปรแกรมตัวอย่างที่  8.1 แสดงการประกาศตัวแปรข้อมูลแบบโครงสร้างและการอ้างอิงสมาชิกภายใน  แบบที่  1


 

 
/*             struct1.c                */
#include<stdio.h>                                                           /*  บรรทัดที่  1  */
#include<conio.h>                                                          /*  บรรทัดที่  2  */
void main(void)                                                                /*  บรรทัดที่  3  */
{                                                                                       /*  บรรทัดที่  4  */
struct  record                                                                  /*  บรรทัดที่  5  */
{                                                                                     /*  บรรทัดที่  6  */
int   i;                                                                               /*  บรรทัดที่  7  */
char  j;                                                                              /*  บรรทัดที่ 8  */
float k;                                                                            /*  บรรทัดที่  9  */
};                                                                                    /*  บรรทัดที่  10 */
struct record one,two;                                                     /*  บรรทัดที่  11  */
clrscr();                                                                            /*  บรรทัดที่  12  */
one.i=7; one.j='I'; one.k=1.2345;                                    /*  บรรทัดที่  13  */
two.i=4; two.j='J'; two.k=9.8765;                                    /*  บรรทัดที่  14  */
printf("I = %d, J = %c, K = %.5f\n",one.i,one.j,one.k);   /*  บรรทัดที่  15  */
printf("I2 = %d, J2 = %c, K2 = %.5f\n",two.i,two.j,two.k);/*  บรรทัดที่  16  */
printf("\nPress any key back to program...");                  /*  บรรทัดที่  17  */
getch();                                                                           /*  บรรทัดที่  18  */
}                                                                                     /*  บรรทัดที่  19  */

 
 


ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: I = 7,	J = I ,	K = 1.23450  I2 = 4,	J 2= J ,	K2 = 9.87650    Press any key back to program ...
คำอธิบายโปรแกรม
            จากโปรแกรมตัวอย่างที่  8.1  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่  ประกาศข้อมูลแบบโครงสร้าง  โดยที่  record  เป็นชื่อข้อมูลแบบโครงสร้าง
บรรทัดที่  11  ประกาศตัวแปรโครงสร้างชื่อ  one  และ  two
บรรทัดที่  13  และ  14  เป็นการอ้างอิงตัวแปรภายในโครงสร้าง
บรรทัดที่  15    นำค่าตัวแปร  i, j, k  ภายในโครงสร้าง  one  แสดงออกที่จอภาพ
บรรทัดที่  16    นำค่าตัวแปร  i, j, k  ภายในโครงสร้าง  two  แสดงออกที่จอภาพ

โปรแกรมตัวอย่างที่  8.2 แสดงการประกาศตัวแปรข้อมูลแบบโครงสร้างและการอ้างอิงสมาชิกภายใน  แบบที่  2


 

 
/*             struct2.c                */
#include<stdio.h>                                                                             /*  บรรทัดที่  1  */
#include<conio.h>                                                                        /*  บรรทัดที่  2  */
void main(void)                                                                                /*  บรรทัดที่  3  */
{                                                                                                     /*  บรรทัดที่  4  */
      struct      simple                                                                       /*  บรรทัดที่  5  */
{                                                                                                    /*  บรรทัดที่  6  */
      int  num;                                                                                        /*  บรรทัดที่  7  */
      char ch;                                                                                 /*  บรรทัดที่  8  */
} a,b;                                                                                             /*  บรรทัดที่  9  */
      clrscr();                                                                                         /*  บรรทัดที่  10  */
      a.num = 9;            a.ch='K';                                                           /*  บรรทัดที่  11  */
      b.num = a.num+6;              b.ch=a.ch - 1;                                      /*  บรรทัดที่  12  */
      printf("Number a = %d, Char a = %c\n", a.num, ++a.ch);          /*  บรรทัดที่  13  */
      printf("Number b = %d, Char b = %c\n", b.num-6, b.ch);          /*  บรรทัดที่  14  */
      printf("\nPress any key back to program...");                               /*  บรรทัดที่  15  */
      getch();                                                                                        /*  บรรทัดที่  16  */
}                                                                                                  /*  บรรทัดที่  17  */
 
 

ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: Number  a = 9,	Char  a = L  Number  a = 9,	Char  b = J    Press any key back to program ...   

คำอธิบายโปรแกรม
            จากโปรแกรมตัวอย่างที่  8.2  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่  ประกาศข้อมูลแบบโครงสร้าง  โดยที่  simple  เป็นชื่อข้อมูลแบบโครงสร้าง
บรรทัดที่  11  และ  12  เป็นการอ้างอิงตัวแปรภายในโครงสร้าง
บรรทัดที่  13    นำค่าตัวแปร  num, ch  ภายในโครงสร้าง  a  แสดงออกที่จอภาพ
บรรทัดที่  14    นำค่าตัวแปร  num, ch  ภายในโครงสร้าง  b  แสดงออกที่จอภาพ

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

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