C语言中的小代码片段。
#include<stdio.h>
int main()
{
printf("%zun%zun", sizeof(char*), sizeof(double*));
}
输出:(GCC 64 位(
8
8
sizeof(char*)
总是等于sizeof(double*)
吗?
C标准对此有何评论?
sizeof(char*)
和sizeof(double*)
都是指针的大小。因此,它们在任何可以想象的系统上都很可能是相同的。
但是,从理论上讲,实现可能具有不同的方法来引用不同的数据类型。我可以想象一个具有小尺寸优化内存方案的系统在一个特殊的地方做单字节普通旧数据,隐式"只有"32 位指针,而它在更大的区域内执行更大的复合构造,这需要 64 位指针。
因此,无法保证这种看似"明显"的假设。
当然,这确实假设所有内容都在同一个系统上,指针大小可以并且确实在不同的系统之间有所不同。
不仅如此,每当您打印指针变量时,您都会得到相同的值。因为指针变量用于保存变量的地址。