C语言中的小代码片段。
#include<stdio.h>
int main()
{
printf("%zu\n%zu\n", sizeof(char*), sizeof(double*));
}输出:(GCC 64位)
8
8sizeof(char*)总是等于sizeof(double*)吗?
C标准对此有何看法?
发布于 2018-09-07 07:13:02
sizeof(char*)和sizeof(double*)都是指针的大小。因此,它们很可能在任何可想象的系统上都是相同的。
但是,从理论上讲,实现有不同的方法来引用不同的数据类型。我可以想象一个系统使用一个小规模的优化内存方案,例如在一个特殊位置执行单字节普通旧数据,隐式地“只有”32位指针,而它在更大的区域中执行更大的复合构造,这需要64位指针。
因此,这一看似“明显”的假设并不能得到保证。
当然,这假设所有的东西都在同一个系统上,指针大小在不同的系统之间可以也确实不同。
发布于 2018-09-07 07:12:34
不仅如此,无论何时打印指针变量,都会得到相同的值。因为指针变量用于保存变量的地址。
https://stackoverflow.com/questions/52217097
复制相似问题