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

ความแตกต่างระหว่าง NULL Pointer และ Void Pointer ในภาษา C


ความแตกต่างหลัก

ความแตกต่างระหว่าง NULL Pointer และ Void Pointer คือ NULL Pointer เป็น ค่า ส่วน Void Pointer เป็น ชนิดข้อมูล (type)

NULL Pointer

NULL Pointer หมายถึง Pointer ที่ไม่ชี้ไปที่ที่อยู่หน่วยความจำใดๆ หากไม่มีที่อยู่ให้ชี้ ให้กำหนดค่าเป็น NULL

ทุกชนิดของ Pointer เช่น int *, char * ล้วนมีค่า NULL Pointer

รูปแบบไวยากรณ์:

<ชนิดข้อมูล> *<ชื่อตัวแปร> = NULL;

ตัวอย่าง:

int *p = NULL;
char *p = '\0';

ตัวอย่างโปรแกรม NULL Pointer

#include <stdio.h>
int main() {
    printf("TutorialPoint C Programming");
    int *p = NULL; // ptr เป็น NULL pointer
    printf("\n The value of pointer is: %x ", p);
    return 0;
}

ผลลัพธ์:

TutorialPoint C Programming
The value of pointer is: 0

Void Pointer

Void Pointer คือ Pointer ที่ไม่มีชนิดข้อมูลผูกมาด้วย เรียกอีกอย่างว่า General Purpose Pointer สามารถเก็บที่อยู่ของชนิดข้อมูลได้ทุกชนิด

รูปแบบไวยากรณ์:

void *<ชื่อตัวแปร>;

ตัวอย่าง:

void *p;
int a;
char c;

p = &a; // p กลายเป็น integer pointer
p = &c; // p กลายเป็น character pointer

ตัวอย่างโปรแกรม Void Pointer

#include <stdio.h>
int main() {
    int a = 10;
    void *ptr = &a;
    printf("%d", *(int *)ptr); // ต้อง type cast ก่อน dereference
    return 0;
}

ผลลัพธ์:

10

สรุปความแตกต่าง

คุณสมบัติNULL PointerVoid Pointer
ลักษณะเป็นค่า (Value)เป็นชนิดข้อมูล (Type)
วัตถุประสงค์ระบุว่าไม่ชี้ที่ไหนชี้ได้ทุกชนิดข้อมูล
การ Dereferenceไม่ได้ (ทำให้เกิด Error)ได้ แต่ต้อง Type Cast ก่อน