如果我减去两个空指针,我就会得到指针位置之间的相对距离(至少在我的测试系统上)。我应该使用什么类型来存储结果,以便与 64 位系统兼容? size_t 是正确的类型还是很长?
背景:我们需要检查给定的 void 指针是否可以安全地用作双指针。我们曾经将指针强制转换为 int 并检查低三位是否为零,但是我们当前的编码标准不再允许将指针强制转换为整数类型。我正在考虑计算 void 指针和 NULL 指针之间的差异,并检查该差异是否可以被 8 整除。假设 NULL 指针始终是 8 字节对齐的?
C 标准中没有定义 void 指针的减法。仅当指针都指向同一个数组时才定义指针的减法,并且 void 指针不能指向任何数组,因为数组中不能包含 void 元素。
您很可能使用 gcc 或兼容的东西,它允许对 void 指针进行算术作为扩展,并将其视为 char 指针。但严格的 C 编译器不应允许对 void 指针进行指针算术。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)