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