sizeof void指针

alf*_*ani 19 c void-pointers

为什么是sizeof无效指针2

Jar*_*Par 39

a的大小void*是依赖于平台的值.通常,对于32位和64位平台,它的值分别为4或8.如果你得到2作为值,那么你可能在16位编码平台上运行(或者可能有编码错误).

您可以发布您正在使用的代码以及有关您的环境/操作系统的更多信息吗?

  • 由于某种原因,很多高校(尤其是印度)似乎仍然为什么我们往往看到了很多问题,对SO要用的东西像Turbo C的16位DOS(以及一些非常不好的教科书),这是和其他地方有例如`void main()`和关于sizeof(void*)为2的假设等. (9认同)
  • 他可能在16位DOS下运行Turbo C. (3认同)

Joh*_*ode 5

根据在线C标准(n1256草案):

6.2.5类型
...
27 指向void的指针应具有与指向字符类型的指针相同的表示和对齐要求.39)类似地,指向兼容类型的合格或非限定版本的指针应具有相同的表示和对齐要求.所有指向结构类型的指针都应具有相同的表示和对齐要求.所有指向union类型的指针都应具有相同的表示和对齐要求.指向其他类型的指针不需要具有相同的表示或对齐要求.

至于为什么void和char指针在你的系统上的大小为2,我怀疑那是因为你是在一个16位平台上.