CProgramming

บทที่ 6 พอยเตอร์

พอยน์เตอร์ (Pointer)

เป็นตัวแปรชนิดหนึ่งที่มีลักษณะการเก็บที่อยู่ของหน่วยความจำแทนการเก็บค่าเหมือนตัวแปรอื่นทั่วไป ตัวแปรพอยน์เตอร์ยังสามารถประยุกต์ใช้ในเรื่องอื่นๆ ได้อีก เช่น อาร์เรย์ โครงสร้าง และไฟล์

การประกาศตัวแปรพอยน์เตอร์เป็นชนิดอะไรก็ต้องใช้เก็บที่อยู่หรือชี้ให้ตรงกับตัวแปรที่เป็นชนิดเดียวกัน

ตัวอย่างการประกาศตัวแปรพอยน์เตอร์

int *pti; จะใช้เก็บที่อยู่ของตัวแปร int เท่านั้น
float *ptf; จะใช้เก็บที่อยู่ของตัวแปร float เท่านั้น
char *ptc; จะใช้เก็บที่อยู่ของตัวแปร char เท่านั้น

ตัวอย่างการกำหนดค่าที่อยู่หรือชี้ให้ตรงกับตัวแปร

pti = &a; นำที่อยู่ของตัวแปร a ที่เป็นชนิด int ไปเก็บที่ตัวแปร pti
ptf = &b; นำที่อยู่ของตัวแปร b ที่เป็นชนิด float ไปเก็บที่ตัวแปร ptf
ptc = &c; นำที่อยู่ของตัวแปร c ที่เป็นชนิด char ไปเก็บที่ตัวแปร ptc
url.png

ลองบันทึกผลลัพธ์จากโปรแกรมตัวอย่างต่อไปนี้ดูนะครับ

ตัวอย่างที่ 50

#include<stdio.h>
int main(){
   int *ptrx, x=10;
   float *ptry, y=12.3456;
   char *ptrz, z='M';
   ptrx = &x;
   ptry = &y;
   ptrz = &z;
   printf("int = %d\nfloat = %f\nchar = %c\n",*ptrx,*ptry,*ptrz);
   printf("Size %d %d %d\n",sizeof(ptrx),sizeof(ptry),sizeof(ptrz));
   return 0;
}

ตัวอย่างที่ 51

#include<stdio.h>
int main(){
   int k, *intPtr;
   k = 2;
   printf("k is stored at %p.\n",&k);
   intPtr = &k;
   printf("Value of k is %d.\n",k);
   printf("Value pointed to by intPtr is %d.\n",*intPtr);
   *intPtr = 10;
   *intPtr += 5;
   printf("Value pointed to by intPtr is %d.\n",*intPtr);
   printf("Value of k is %d.\n",k);
   k = k - 2;
   printf("Value pointed to by intPtr is %d.\n",*intPtr);
   printf("k is stored at %p.\n",&k);
   printf("intPtr is stored at %p.\n",&intPtr);
   printf("&*intPtr = %p, and ",&*intPtr);
   printf("*&intPtr = %p.\n",*&intPtr);
   return 0;
}

ตัวอย่างที่ 52

#include<stdio.h>
int main(){
   int intArr[] = {5, 12, -2, 8, 10};
   int *intPtr,i;
   intPtr = &intArr[0];
   for(i=0;i<5;i++){
      printf("intArr[%d]   = %3d\n",i,intArr[i]);
      printf("*(intPtr)+%d = %3d\n",i,*(intPtr+i));
      printf("*(intArr)+%d = %3d\n",i,*(intArr+i));
   }
   return 0;
}

—–

The only source of knowledge is experience.

ประสบการณ์ คือแหล่งความรู้เพียงแหล่งเดียวเท่านั้น

อัลเบิร์ต ไอน์สไตน์

บทที่ 5 ฟังก์ชัน (Prev Lesson)
(Next Lesson) บทที่ 8 ไฟล์
Back to CProgramming

No Comments

Give a comment