您的位置:首页 > 编程语言 > C语言/C++

C语言的指针大小问题

2016-01-17 16:28 399 查看
一说到指针的大小很多人都会想到int型,char型,double型,然后觉得不同类型的指针所占内存大小不同,其实这是一种误区.

因为指针其实就是一个无符号整形,一个整数而已,它的大小取决于你的系统是16 32 还是64位的 16/8=2byte 32/8=4byte 64/8=8byte .

但是你会问为什么我的系统是64位的,但是我的指针却是32位的4字节指针.这个也很简单解释,因为我们是用编译器来写代码的,编译器已经默认我们的程序是在32位系统下运行,所以我们在编译器当中看到的指针都是占4个字节.

有人又会问,为什么不用64位来编译呢?因为我们的程序要兼容32位的机器啊!你以为每个人都用64位的机器吗??

讨论完指针大小问题,我们再讨论一下指针所指向的内存块所占内存大小.地球人 都知道char占一个字节,int占2个字节,double占4个字节,long double占8个字节(这是默认的32位编译环境下,在64位下翻倍就是了),所以一个char指针所占内存为4个字节(32位下),所指向的内存区域占1个字节.同理其它类型也是一样的,

最后附两张图:

32位下



64位下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: