首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sizeof(int)是否保证等于sizeof(void*)

sizeof(int)是否保证等于sizeof(void*)
EN

Stack Overflow用户
提问于 2012-01-19 03:13:46
回答 7查看 3.6K关注 0票数 4

在c语言中,数据类型"int“的大小总是等于指针的大小吗?

我只是好奇。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-01-19 03:16:49

一点也不,不能保证sizeof(int) == sizeof(void*)。在Linux/AMD64上,sizeof(int)是4字节,sizeof(void*)是8字节(与该平台上的sizeof(long)相同)。

最近的C标准(例如C99)定义了一个标准的报头<stdint.h>,其中它应该定义一个整数类型的intptr_t,它被保证具有指针的大小(甚至可能是可逆地转换到和来自指针的)。

我认为该标准并不能保证所有的指针都具有相同的大小,特别是指向函数的指针可以比数据指针“更大”(我不能说出哪个平台是真的)。我相信最新的Posix标准要求这样(例如,对于dlsym(3))。

另请参阅this C referencen1570草案C11标准(或更好)

PS。在2021年,我不能命名一个与sizeof(long) != sizeof(void*)通用的平台。但在上个世纪,旧的intel 286可能就是这样一个平台。

票数 11
EN

Stack Overflow用户

发布于 2012-01-19 03:17:02

不是的。例如,在大多数64位系统中,int是4字节,void*是8。

票数 2
EN

Stack Overflow用户

发布于 2012-01-19 03:17:34

这是不能保证的。

例如,在大多数64位系统中,这两种大小通常是不同的。

即使是sizeof (int *)也无法保证等同于sizeof (void *)

void *大小的唯一保证是

代码语言:javascript
复制
sizeof (void *) == sizeof (char *)
   == sizeof (signed char *) == sizeof (unsigned char *)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8915918

复制
相关文章

相似问题

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