Array ใน C ใช้เพื่อเก็บองค์ประกอบประเภทเดียวกันในขณะที่ Pointers เป็นตัวแปรที่อยู่ซึ่งเก็บที่อยู่ของตัวแปร ตอนนี้ตัวแปรอาร์เรย์ยังมีที่อยู่ซึ่งสามารถชี้ได้ด้วยตัวชี้และอาร์เรย์สามารถนำทางได้โดยใช้ pointer.r ประโยชน์ของการใช้ตัวชี้สำหรับอาร์เรย์คือสองเท่า อันดับแรก เราเก็บที่อยู่ของอาร์เรย์ที่จัดสรรแบบไดนามิกไว้กับตัวชี้และตัวที่สอง เพื่อส่งผ่านอาร์เรย์ไปยังฟังก์ชัน ต่อไปนี้เป็นข้อแตกต่างในการใช้อาร์เรย์และการใช้ตัวชี้ไปยังอาร์เรย์
-
ตัวดำเนินการ sizeof() พิมพ์ขนาดของอาร์เรย์ในกรณีของอาร์เรย์ และในกรณีของพอยน์เตอร์ จะพิมพ์ขนาดของ int
-
งาน ตัวแปรอาร์เรย์ไม่สามารถกำหนดแอดเดรสของตัวแปรอื่นได้ แต่พอยน์เตอร์ใช้ได้
-
ค่าแรก ค่าดัชนีแรกจะเหมือนกับค่าของตัวชี้ ตัวอย่างเช่น array[0] ==*p.
-
การทำซ้ำ องค์ประกอบอาร์เรย์สามารถนำทางได้โดยใช้ดัชนีโดยใช้ [] ตัวชี้สามารถให้การเข้าถึงองค์ประกอบอาร์เรย์โดยใช้เลขคณิตของตัวชี้ ตัวอย่างเช่น อาร์เรย์[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[]: %d\n", sizeof(arr));
printf("Size of p: %d\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