Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ความแตกต่างระหว่าง Array และ Pointers ในภาษา C

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