Array ใน C ใช้จัดเก็บสมาชิกที่มีชนิดเดียวกัน ในขณะที่ Pointers เป็นตัวแปรที่จัดเก็บที่อยู่ของตัวแปร ตัวแปร Array ก็มีที่อยู่ ซึ่งสามารถชี้ได้โดย Pointer และสามารถนำทาง Array ได้โดยใช้ Pointer ข้อดีของการใช้ Pointer กับ Array มี 2 ด้าน: 1) จัดเก็บที่อยู่ของ Array ที่จัดสรรหน่วยความจำแบบไดนามิก 2) ส่ง Array ไปยังฟังก์ชัน ความแตกต่างในการใช้ Array และ Pointer to Array ดังนี้:
ตัวดำเนินการ sizeof() พิมพ์ขนาดของ Array ในกรณี Array แต่ในกรณี Pointer จะพิมพ์ขนาดของ int
การกำหนดค่า (Assignment) ตัวแปร Array ไม่สามารถกำหนดที่อยู่ของตัวแปรอื่นได้ แต่ Pointer ทำได้
ค่าแรก (First value) ค่าที่ดัชนีแรกเท่ากับค่าของ Pointer เช่น array[0] == *p
การวนลูป (Iteration) สมาชิก Array เข้าถึงได้โดยดัชนี [] Pointer เข้าถึงได้โดย pointer arithmetic เช่น array[2] == *(p+2)
ตัวอย่าง (C)
#include <stdio.h>
void printElement(char* q, int index) {
printf("Element at index(%d) is: %c\n", index, *(q + index));
}
int main() {
char arr[] = {'A', 'B', 'C'};
char* p = arr;
printf("Size of arr[]: %zu\n", sizeof(arr));
printf("Size of p: %zu\n", sizeof(p));
printf("First element using arr is: %c\n", arr[0]);
printf("First element using p is: %c\n", *p);
printf("Second element using arr is: %c\n", arr[1]);
printf("Second element using p is: %c\n", *(p + 1));
printElement(p, 2);
return 0;
}
เอาต์พุต
Size of arr[]: 3 Size of p: 8 First element using arr is: A First element using p is: A Second element using arr is: B Second element using p is: B Element at index(2) is: C