首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指针大小不正确

指针大小不正确
EN

Stack Overflow用户
提问于 2012-11-12 12:20:24
回答 2查看 554关注 0票数 2

可能重复: What the pointer size in 64 bits computer in C++?

我在大学里学C。

我试图在Windows 7/8上设置一个编程环境,但遇到了一个问题

此代码:

代码语言:javascript
复制
int main()
  int *p;
  printf("%d",sizeof(p));
  return 0;
}

打印4而不是8 (8在大学印刷)。我能做什么?

我的Windows是64位和x64处理器。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-12 12:22:33

您可能会将代码编译到32位应用程序中。您需要将其编译为64位应用程序。检查编译器设置。不重要的是你的操作系统是64位。

票数 5
EN

Stack Overflow用户

发布于 2012-11-12 13:29:45

这里的“问题”是取决于编译架构的结果。

C中的基本类型(如intdoublechar)没有预定义的大小;这取决于编译器对哪种类型使用哪种大小。

至于指针,您通常希望能够处理计算机上可用的任何内存位置。在32位架构上,地址范围为2^32。由于指针只不过是一个引用内存位于的地址的数字,2^32个地址(即范围为4 Bytes)正好适合。

对于64位系统,为了寻址所有内存,需要2^64 (即8个字节)的范围。

因此,指针大小需要依赖于系统架构。

请记住:所有指针类型(无论是int*, char*, double*还是其他任何类型)都有相同的大小!在32位上使用整数和整数指针可能会有点混乱,因为在大多数体系结构中,int的大小也是4字节。

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

https://stackoverflow.com/questions/13343619

复制
相关文章

相似问题

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