深入探究 Void 之谜:大小及超越
代表空类型的 void 概念经常激发程序员的好奇心。一个基本问题出现了:空洞的大小是多少?
理解空洞的本质
尝试确定空洞的大小使我们得到一个关键的认识:空洞没有尺寸。它缺乏像其他数据类型那样占用空间的内在特征。这种固有的空性阻止了它被声明为变量。
考虑这个例子:
void n; // Compilation error
GCC 的意外行为
令人惊讶的是,GNU C 编译器(GCC) 使用 sizeof(void) 时返回大小 1。这似乎与虚空没有大小的观念相矛盾。然而,这种行为并不是 void 本质的真实反映,而是 GCC 特有的怪癖。
Void 指针和内存分配
具有特殊类型的 Void 指针void * 通常用于存储地址,无论其基础数据类型如何。当使用malloc(sizeof(void))分配内存时,没有分配实际的内存。相反,返回一个空指针。
递增空指针
示例中的指针 p 引用空地址。递增 p (p ) 通常会按其指向的数据类型的大小递增其值。然而,由于 p 是一个 void 指针,它的增量操作是未定义的,并且在不同的编译器中有所不同。
以上是C 中'void”的大小是多少?的详细内容。更多信息请关注PHP中文网其他相关文章!