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