首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >``sizeof(char*)‘总是等于’`sizeof(double*)‘吗?

``sizeof(char*)‘总是等于’`sizeof(double*)‘吗?
EN

Stack Overflow用户
提问于 2018-09-07 07:07:46
回答 2查看 967关注 0票数 0

C语言中的小代码片段。

代码语言:javascript
复制
#include<stdio.h>

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

输出:(GCC 64位)

代码语言:javascript
复制
8
8

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

C标准对此有何看法?

EN

回答 2

Stack Overflow用户

发布于 2018-09-07 07:13:02

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

但是,从理论上讲,实现有不同的方法来引用不同的数据类型。我可以想象一个系统使用一个小规模的优化内存方案,例如在一个特殊位置执行单字节普通旧数据,隐式地“只有”32位指针,而它在更大的区域中执行更大的复合构造,这需要64位指针。

因此,这一看似“明显”的假设并不能得到保证。

当然,这假设所有的东西都在同一个系统上,指针大小在不同的系统之间可以也确实不同。

票数 1
EN

Stack Overflow用户

发布于 2018-09-07 07:12:34

不仅如此,无论何时打印指针变量,都会得到相同的值。因为指针变量用于保存变量的地址。

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52217097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档