Home >Backend Development >C++ >What Is the Size of `void` in C?
Delving into the Enigma of Void: Size and Beyond
The concept of void, representing an empty type, often sparks curiosity among programmers. A fundamental question arises: What is the size of void?
Understanding the Nature of Void
Attempting to determine the size of void leads us to a crucial realization: void has no size. It lacks the intrinsic characteristic of occupying space like other data types. This inherent emptiness prevents its declaration as a variable.
Consider this example:
void n; // Compilation error
GCC's Unexpected Behavior
Surprisingly, the GNU C compiler (GCC) returns a size of 1 when using sizeof(void). This seemingly contradicts the notion that void has no size. However, this behavior is not a true reflection of void's nature but rather a quirk specific to GCC.
Void Pointers and Memory Allocation
Void pointers, with the special type void *, are commonly used to store addresses regardless of their underlying data type. When allocating memory with malloc(sizeof(void)), no actual memory is allocated. Instead, a null pointer is returned.
Incrementing Void Pointers
The pointer p in your example refers to a null address. Incrementing p (p ) would typically increment its value by the size of the data type it points to. However, since p is a void pointer, its increment operation is undefined and varies across compilers.
The above is the detailed content of What Is the Size of `void` in C?. For more information, please follow other related articles on the PHP Chinese website!