`sizeof(char *)`总是等于`sizeof(double *)`? [重复]

问题描述 投票:0回答:2

C中的小代码片段

#include<stdio.h>

int main()
{
    printf("%zu\n%zu\n", sizeof(char*), sizeof(double*));
}

输出:(GCC 64位)

8
8

sizeof(char*)总是等于sizeof(double*)吗?

C标准对此有何看法?

c pointers sizeof
2个回答
1
投票

sizeof(char*)sizeof(double*)都是指针的大小。所以它们很可能在任何可以想象的系统上都是相同的。

然而,理论上可能的是,实现具有用于引用不同数据类型的不同方法。我可以想象一个具有小尺寸优化存储器方案的系统。单字节普通旧数据在一个特殊的地方,隐含“仅”32位指针,而它在更大的区域内做更大的复合结构,需要64位指针。 因此无法保证这种看似“明显”的假设。

这当然假设一切都在同一系统上,指针大小可以并且确实在不同系统之间变化。


-3
投票

不仅如此,每当您打印指针变量时,您将获得相同的值。因为指针变量用于保存变量的地址。

© www.soinside.com 2019 - 2024. All rights reserved.