c语言中,为什么在64位系统中long跟指针的大小是8,而32位的却是4?是什么导致不一样?求详细解答

c语言中,为什么在64位系统中long跟指针的大小是8,而32位的却是4?是什么导致不一样?求详细解答,第1张

64位系统,这个位数指的是CPU 里面的通用寄存器的数据宽度为64位,也就是说一个地址占二进制位数是64,所以乎山sizeof(double *)==sizeof(int *)==sizeof(char *)==64/8==8

32位系统,同理,判顷御他的一个地址占32位二进制空间,sizeof(double *)==sizeof(int *)==sizeof(char *)==32/8==4

其实明白了两个系统的寻址原理掘岩就能明白,大体就是这个原因。

地址跟系统有关,但是基本数据类型占的大小是由C语言本身决定。

32位和64位系统中,编译器为了相互兼睁此容枯察,所以指针都是4个字节长度。

字节(Byte /bait/ n. [C])是没早茄计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。

32位上是4字节

64位上是8字节

"到目前为此(止)我还没有发现64位指针的VC。包括VC2005"

没有发现并不代表就则改纳没有.

http://msdn2.microsoft.com/zh-cn/library/94z15h2c(VS.80).aspx

标量类型 C 数据类歼乱型 存储区大孙没小(以字节为单位)推荐对齐方式

POINTER * 8 Quadword

http://msdn2.microsoft.com/zh-cn/library/x4d2c09s(VS.80).aspx

http://msdn2.microsoft.com/zh-cn/library/h2k70f3s(VS.80).aspx

http://msdn2.microsoft.com/en-us/library/h2k70f3s(VS.80).aspx


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12326008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存