You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何void*指针的大小为8字节?附验证程序及疑问

为什么sizeof(void *)输出结果是8?

void*是C语言中的通用指针类型,用于存储任意变量的内存地址。sizeof运算符的作用是获取该类型在当前系统环境中占用的字节数。

你得到输出8的核心原因是:当前使用的是64位操作系统+64位编译器环境:

  • 在32位系统中,内存地址是32位长度,所有指针类型(包括void*)都会占用4字节,此时sizeof(void*)会输出4。
  • 在64位系统中,内存地址是64位长度,指针类型需要8字节来存储完整的地址,因此输出结果为8。

需要明确的是,C语言标准并未规定指针的具体大小,它完全取决于目标系统的架构(32位/64位)和编译器实现。而且在同一架构下,不管是int*、char*还是void*,所有指针类型的大小都是一致的——因为它们本质都是用来存储内存地址,地址的长度由系统位数决定。

另外你的验证代码是正确的,用%ld打印sizeof的结果是合适的,因为sizeof返回的size_t类型,在多数系统中是unsigned long的别名,%ld可以正确输出它的值。

内容的提问来源于stack exchange,提问作者pranava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:04:55