1 กรกฎาคม 2552

สรุปการเรียน Lecture 2 เรื่อง Pointer



Pointer เป็นตัวแปรชนิดหนึ่งที่ทำหน้าที่เก็บตำแหน่ง
ที่อยู่ (Address) ของตัวแปรที่อยู่ในหน่วยความจำ


การกำหนด address ให้ pointer
วิธีนำเลข address ไปใส่ pointer ทำได้โดยใช้เครื่องหมาย & (address operator)

Pointer ที่เกิดจากเครื่องหมาย &
เมื่อเครื่องหมาย & ถูกใส่ไว้หน้าตัวแปรใดๆ ก็ตาม จะมีความหมายถึงค่าของตำแหน่งในหน่วยความจำที่ใช้เก็บค่าของตัวแปรนั้น ที่เราจะเห็นกันอยู่บ่อยๆ ก็คือ ในคำสั่ง scanf เช่น
int x;
scanf(“%d”,&x);
มีความหมายว่า ให้รับค่าทางคีย์บอร์ดแล้วให้แปลงเป็น integer แล้วนำไปใส่ในหน่วยความจำที่เป็นตำแหน่งของ x

*** เราสามารถอ้างถึงค่าที่อยู่ในตัวแปร x ได้โดยการใส่ * หน้า &x ก็จะมีความหมายเช่นเดียวกับ x นั่นเอง เช่น
x=5;
printf(“%d %d”, x, *(&x) );
ผลรัน จะเป็น 5

Pointer ที่เกิดจากการกำหนดตัวแปร array
การอ้างถึงชื่อของตัวแปร array โดยไม่ได้ระบุตัวชี้ลำดับ(subscript) จะหมายถึงตำแหน่ง(ในหน่วยความจำ)ของ array ตัวแรก ในภาษาซีจะไม่อนุญาตให้เปลี่ยนแปลงตำแหน่งของตัวแปร array ดังกล่าวได้ เช่น
char a[100];
a+=10; // error
ในกรณีนี้ &a จะมีความหมายเช่นเดียวกับ a ซึ่งก็คือค่าตำแหน่งในหน่วยความจำของ array ตัวแรกนั่นเอง
การประกาศชนิดของตัวแปรพอยน์เตอร์

รูปแบบ
type *variable-name
type หมายถึง ชนิดของตัวแปร
* หมายถึง เป็นเครื่องหมายที่แสดงว่าตัวแปรที่
ตามหลังเครื่องหมายนี้เป็นตัวแปรพอยน์เตอร์
variable-name เป็นชื่อของตัวแปรที่ต้องการประกาศว่าเป็น
ชนิดพอยน์เตอร์


ข้อสรุปเรื่อง pointer
• ทำหน้าที่ชี้ไปยังตำแหน่งเก็บข้อมูลในหน่วยความจำ
• การประกาศ pointer ต้องกำหนด data type ด้วย
• ใช้ pointer ชี้ไปยัง pointer หรือชี้ไปยัง array หรือ array ของ pointer ก็ได้
• pointer ที่ชี้ไปยัง pointer ใช้ดอกจันสองตัว เช่น int** p
• pointer arithmetic เป็นไปตาม data type




DTS 03-01-07-2552

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

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