Reference (อ้างอิง)
- ชื่อเรียกอื่นของตัวแปรที่ประกาศไว้
- เข้าถึงได้ผ่าน pass by value
- ไม่สามารถเก็บค่า null ได้
Pointer (ตัวชี้)
- เก็บที่อยู่ (address) ของตัวแปร
- สามารถเก็บค่า null ได้
- เข้าถึงผ่าน pass by reference
- ไม่ต้อง initialize ขณะประกาศ
Syntax
datatype *variablename; // pointer
pointer = &variable; // initialization
ตัวอย่างโปรแกรม
#include <stdio.h>
int main() {
int a = 2, b = 4;
int *p;
printf("add of a = %p\n", (void*)&a);
printf("add of b = %p\n", (void*)&b);
p = &a;
printf("a value = %d\n", a);
printf("*p value = %d\n", *p);
printf("p value (address) = %p\n", (void*)p);
p = &b;
printf("b value = %d\n", b);
printf("*p value = %d\n", *p);
printf("p value (address) = %p\n", (void*)p);
return 0;
}
ผลลัพธ์
add of a = 0x7ffc...
add of b = 0x7ffc...
a value = 2
*p value = 2
p value (address) = 0x7ffc...
b value = 4
*p value = 4
p value (address) = 0x7ffc...