วันพุธที่ 17 กันยายน พ.ศ. 2557

06:47
6.5 ตัวดำเนินการที่ใช้กับพอยน์เตอร์  (pointer  operator)

            6.5.1  ตัวดำเนินการ  *  (asterisk) 
                        บางครั้งเรียกว่า เครื่องหมายดอกจัน เป็นเครื่องหมายที่ใช้บ่งบอกถึงค่าข้อมูลที่พอยน์เตอร์ชี้อยู่
                        เพื่อความเข้าใจเกี่ยวกับการใช้ตัวดำเนินการ  *  กับพอยน์เตอร์มากยิ่งขึ้น         ให้ศึกษาโปรแกรมตัวอย่างที่  6.1  ดังต่อไปนี้
โปรแกรมตัวอย่างที่  6.1  แสดงการใช้ตัวดำเนินการ * เพื่อบอกถึงค่าข้อมูลที่พอยน์เตอร์ชี้อยู่

/*             asterisk.c        */
#include<stdio.h>                                                                              /*  บรรทัดที่  1  */
#include<conio.h>                                                                             /*  บรรทัดที่  2  */
void main (void)                                                                                   /*  บรรทัดที่  3  */
{                                                                                                       /*  บรรทัดที่  4  */
      int a=10,b=25;                                                                     /*  บรรทัดที่  5  */
      int *pa, *pb;                                                                          /*  บรรทัดที่  6  */
      clrscr( );                                                                                 /*  บรรทัดที่  7  */
      pa = &a;                                                                               /*  บรรทัดที่  8  */
      pb = &b;                                                                                /*  บรรทัดที่  9  */
      printf("a = %d, b = %d", *pa, *pb);                                  /*  บรรทัดที่  10  */
      printf("\n\nPress any key back to program ...");              /*  บรรทัดที่  11  */
      getch();                                                                                  /*  บรรทัดที่  12  */
}                                                                                                    /*  บรรทัดที่  1 3 */
ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: a = 10, b = 25      Press any key back to program…
คำอธิบายโปรแกรม 
            จากโปรแกรมตัวอย่างที่  6.1  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ  ได้ดังนี้
บรรทัดที่  6  คำสั่ง  int *pa, *pb;  เป็นการประกาศตัวแปรพอยเตอร์  pa  และ  pb  เป็นชนิด  int
บรรทัดที่  8  คำสั่ง  pa = &a;  เป็นการกำหนดค่า  address  แรกของ  a  ให้ตัวแปรพอยเตอร์  pa
บรรทัดที่  9  คำสั่ง  pb = &a;  เป็นการกำหนดค่า  address  แรกของ  b  ให้ตัวแปรพอยเตอร์  pb
บรรทัดที่  10 พิมพ์ค่าที่ตัวแปรพอยเตอร์ pa และ pb ชี้อยู่  แล้วออกจอภาพ  นั่นคือชี้ค่าตัวแปร  a และ b  ตามลำดับ
บรรทัดที่ 11 และ 12  พิมพ์ข้อความให้กดคีย์ใด ๆ  เพื่อกลับเข้าสู่โปรแกรม  และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด  เช่น  กด enter จะกลับเข้าสู่โปรแกรมตามลำดับ
            6.5.2 ตัวดำเนินการ  &  (ampersand) 
                        เป็นเครื่องหมายที่ใช้บ่งบอกถึงค่า  address  ของข้อมูล
                        เพื่อความเข้าใจเกี่ยวกับการใช้ตัวดำเนินการ  &  กับพอยน์เตอร์มากยิ่งขึ้น  ให้ศึกษาโปรแกรมตัวอย่างที่  6.2  ดังต่อไปนี้
โปรแกรมตัวอย่างที่  6.2  แสดงการใช้ตัวดำเนินการ  &  เพื่อบอกถึงค่า  address  ของข้อมูล

/*             ampersan.c          */
                #include<stdio.h>                                                              /*  บรรทัดที่  1  */
#include<conio.h>                                                             /*  บรรทัดที่  2  */
void main(void)                                                                    /*  บรรทัดที่  3  */
{                                                                                              /*  บรรทัดที่  4  */
      int m=25,n=60;                                                                 /*  บรรทัดที่  5  */
      int *pm,*pn;                                                                       /*  บรรทัดที่  6  */
      clrscr( );                                                                              /*  บรรทัดที่  7  */
      pm=&m;                                                                             /*  บรรทัดที่  8  */
      pn=&n;                                                                               /*  บรรทัดที่  9  */
      printf("M1 = %d, N1 = %d\n", m, n);                              /*  บรรทัดที่  10  */
      printf("M2 = %d, N2 = %d\n", *pm, *pn);                     /*  บรรทัดที่  11*/
      printf("\nAddress of m,n are %p %p \n", &pm, &pn); /* บรรทัดที่ 12  */
      printf("\nPress any key back to program ...");              /*  บรรทัดที่  13  */
      getch();                                                                               /*  บรรทัดที่  14  */
}                                                                                              /*  บรรทัดที่  15  */
ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: M1 = 25, N1 = 60  M2 = 25, N2 = 60  Address of m,n are FFF0 FFEE    Press any key back to program…     
คำอธิบายโปรแกรม 
            จากโปรแกรมตัวอย่างที่  6.2  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ  ได้ดังนี้

บรรทัดที่  6  คำสั่ง   int *pm,*pn;  คำสั่งประกาศตัวแปรพอยน์เตอร์  pm  และ  pn  เป็นชนิด int
บรรทัดที่  8  คำสั่ง  pm=&m; เป็นการกำหนดค่า  address  แรกของ  m  ให้ตัวแปรพอยน์เตอร์  pm
บรรทัดที่  9  คำสั่ง  pn=&n; เป็นการกำหนดค่า  address  แรกของ  n  ให้ตัวแปรพอยน์เตอร์  pn
บรรทัดที่  10  พิมพ์ค่าตัวแปร  m  และ n แสดงที่จอภาพ
บรรทัดที่  11  พิมพ์ค่าตัวแปรที่ตัวแปรพอยน์เตอร์  pm  และ  pn  ชี้อยู่แสดงที่จอภาพ
บรรทัดที่  12  พิมพ์ค่า  address  ของตัวแปร  m  และ  n  ที่ตัวแปรพอยน์เตอร์  pm  และ  pn  ชี้อยู่  โดยใช้รหัสรูปแบบข้อมูลเป็น  %p  แสดงที่จอภาพ
บรรทัดที่  13 และ 14  พิมพ์ข้อความให้กดคีย์ใด ๆ  เพื่อกลับเข้าสู่โปรแกรม  และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด  เช่น  กด enter จะกลับเข้าสู่โปรแกรมตามลำดับ

0 ความคิดเห็น:

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