Possible Duplicate:
What is the size of void?
Hi all ! I am using gcc for compiling my C programs, just discovered accidentally that the sizeof(void) is 1 byte in C.
Is there any explanation for this ? I always thought it to be ZERO (if it really stores nothing) !
Thanks !
this is a gcc specific feature - see here http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Pointer-Arith.html#Pointer-Arith
or
What is the size of void?
Usually you don't ask for
sizeof(void)
since you never usevoid
as type. I guess the behavior you are experimenting depends on the specific compiler. On my gcc it returns 1 as well.This is a non standard extension of gcc, but has a rationale. When you do pointer arithmetic adding or removing one unit means adding or removing the object pointed to size. Thus defining
sizeof(void)
as 1 helps definingvoid*
as a pointer to byte (untyped memory address). Otherwise you would have surprising behaviors using pointer arithmetic likep+1 == p
when p isvoid*
.The standard way would be to use `char* for that kind of purpose (pointer to byte).