ในส่วนนี้เราจะมาดูกันว่าอะไรคือความแตกต่างระหว่างตัวชี้โมฆะใน C และตัวชี้เป็นโมฆะใน C++ ทั้งคู่เป็นโมฆะพอยน์เตอร์ แต่ใน C ตัวชี้โมฆะสามารถกำหนดให้กับตัวชี้ประเภทใดก็ได้ แต่ใน C ++ เราไม่สามารถทำเช่นนั้นได้ ใน C ++ เราจำเป็นต้องพิมพ์แบบชัดแจ้งสำหรับการกำหนด
ในตัวอย่างต่อไปนี้ บรรทัดเหล่านี้สามารถดำเนินการได้เมื่อเราเขียนโค้ดในภาษา C
void *p; int *int_ptr = p;
สิ่งนี้จะทำงานได้ดีใน C ตอนนี้ถ้าเราใช้ malloc() เพื่อจัดสรรพื้นที่หน่วยความจำบางส่วน เราสามารถใช้ typecast ที่ชัดเจน แต่ถ้าเราไม่ทำอย่างนั้น มันก็จะใช้ได้ดีเช่นกัน ฟังก์ชัน malloc() คืนค่าตัวชี้เป็นโมฆะ
int *int_ptr = malloc(sizeof(int) * 10);
ที่นี่ ตัวชี้โมฆะที่ส่งคืนจะถูกแปลงโดยปริยายเป็นตัวชี้ประเภทจำนวนเต็ม
ตอนนี้ถ้าเราต้องการเรียกใช้โปรแกรมเดียวกันใน C และ C++ เราควรพิมพ์พอยน์เตอร์อย่างชัดเจน
void *p; int *int_ptr = (int *) p; int *arr_ptr = (int *) malloc(sizeof(int) * 10);