इस सेक्शन में हम देखेंगे कि C में void पॉइंटर और C++ में void पॉइंटर के बीच क्या अंतर हैं। वे दोनों void पॉइंटर्स हैं लेकिन C में एक void पॉइंटर को किसी भी पॉइंटर टाइप को असाइन किया जा सकता है, लेकिन C++ में हम ऐसा नहीं कर सकते। C++ में असाइन करने के लिए हमें स्पष्ट रूप से टाइपकास्ट करना होगा।
निम्नलिखित उदाहरण में ये लाइनें तब निष्पादित हो सकती हैं जब हम C में कुछ कोड लिख रहे हों।
void *p; int *int_ptr = p;
यह C में ठीक काम करेगा। अब यदि हम कुछ मेमोरी स्पेस आवंटित करने के लिए malloc() का उपयोग करते हैं, तो हम स्पष्ट टाइपकास्ट का उपयोग कर सकते हैं, लेकिन यदि हम ऐसा नहीं करते हैं, तो यह भी ठीक होगा। malloc() फंक्शन void पॉइंटर लौटाता है।
int *int_ptr = malloc(sizeof(int) * 10);
यहां लौटाया गया void पॉइंटर अंतर्निहित रूप से इंटीजर टाइप पॉइंटर में परिवर्तित हो जाता है।
अब यदि हम उसी प्रोग्राम को C और C++ दोनों में चलाना चाहते हैं, तो हमें पॉइंटर्स को स्पष्ट रूप से टाइपकास्ट करना चाहिए।
void *p; int *int_ptr = (int *) p; int *arr_ptr = (int *) malloc(sizeof(int) * 10);