如何解决所有指针的长度是否相同? [重复]
| 这个问题已经在这里有了答案:解决方法
更为重要的问题是“对齐要求”。 “ 0”可以指向任何字节,而可能要求“ 1”仅指向4的倍数的地址(如果“ 2”是32位)。
,结构和联合的指针都必须具有与C规则的其他结果相同的大小。我认为指向枚举的指针也是如此。
基本类型的指针大小可能不同。
这起源于单词修饰机器。大多数指针只是该单词的地址,但是char指针需要指出该单词所指向的char。 (在诸如DSP之类的更现代的基于字词的体系结构上,人们仅将其用作字符,但是在过去,它被认为是浪费的,并且不能与这些机器上的常规约定进行互操作。)
显然,void *必须具有与char *相同的结构。将void *分配给较小的指针将只会删除\“ char in word \”指示。将较小的指针分配给void *将仅使用\“单词的第一个字符\”。
另请参阅:是否存在平台,其中指向不同类型的指针具有不同的大小?
,您无法在函数指针和
void*
指针之间进行强制转换,因此问题的一部分是基于错误的假设。
有关详细信息,请参见此FAQ条目。
我也反对有关“当今”的问题的推理;更改C以使其假定所有机器都表现为当前主流硬件不是开发语言的正确方法。存在指针类型和指针转换的限制,以捕获已经存在的(可能已经存在),并且很可能再次是实际的机器,这些限制使(太)难以实现该语言。
,基本类型的指针大小不同,但结构的指针大小相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。