C Quiz – 101 | Question 4





#include "stdio.h" 
int main()
 void *pVoid;
 pVoid = (void*)0;
 return 0;


Pick the best statement for the above C program snippet.
(A) Assigning (void *)0 to pVoid isn’t correct because memory hasn’t been allocated. That’s why no compile error but it’ll result in run time error.
(B) Assigning (void *)0 to pVoid isn’t correct because a hard coded value (here zero i.e. 0) can’t assigned to any pointer. That’s why it’ll result in compile error.
(C) No compile issue and no run time issue. And the size of the void pointer i.e. pVoid would equal to size of int.
(D) sizeof() operator isn’t defined for a pointer of void type.

Answer: (C)

Explanation: (void *)0 is basically NULL pointer which is used for many purposes in C. Please note that no matter what is the type of pointer, each pointer holds some address and the size of every pointer is equal to sizeof(int). So D) isn’t correct. An absolute address can be assigned to any pointer though it might result in issues at run time if the address is illegal. Since 0 is a legal address, assigning (void *)0 to pVoid is fine. So B) isn’t correct. We aren’t doing any illegal operation with pVoid here. So it’ll not result in any compile/run time error. So A) isn’t correct. For example, if we perform illegal operation over pVoid e.g. de-referencing of void pointer i.e. *pVoid, it’ll result in error. The above program will compile/run without any issue. So C) is correct.

Quiz of this Question

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.

My Personal Notes arrow_drop_up
Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.