C语言中 。定义a[100],求sizeof(a[100]),以及sizeof(&a)和sizeof(&a[0]),各自代表什么意思,等于几

如题所述

在C语言中,定义a[100]表示定义了一个包含 100 个元素的数组 a。下面是对于 sizeof() 运算符的解释:

    sizeof(a[100]) 表示 a 数组中的第 100 个元素的字节数,由于数组元素的类型未知,因此这个值可能不同,通常为 4 或 8 字节,具体取决于编译器和本机处理器架构。

    sizeof(&a) 表示 a 数组的指针的字节数,即整个数组的地址的字节数。在 64 位计算机上,通常为 8 字节,而在 32 位计算机上,通常为 4 字节。

    sizeof(&a[0]) 表示 a 数组中第一个元素的指针的字节数,即数组首地址的字节数。在 64 位计算机上,通常为 8 字节,而在 32 位计算机上,通常为 4 字节。

    总之,sizeof() 运算符返回的是一个类型或变量所占用的内存空间大小,单位为字节。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-18
sizeof(a[100]):取决于a的类型。比如char的话为1等等。
sizeof(&a):由于是地址,为4
sizeof(&a[0]):由于是地址,为4追问

可是我运行程序显示sizeof(&a)是400啊,为什么地址是4,a是int类型

追答

a是int类型的话,看来你的机器,int的长度为4。有的机器int长度为2。
sizeof(&a)的话,我感觉有些问题,现在还不能判断。

另外,&是地址,地址就是4位。。

追问

谢谢你的回答,有人是这么回答的,sizeof(&a) 取数组地址 也就是数组 一次求出是数组占内存大小

第2个回答  2012-06-18
我这个是vc6输出的结果 char类型为

sizeof(a[100])=1,
sizeof(&a)=100,
sizeof(&a[0])=4,
Press any key to continue

int类型为
sizeof(a[100])=4,
sizeof(&a)=400,
sizeof(&a[0])=4,
Press any key to continue追问

谢谢你的回答,int类型,我也运行程序了,我就是想知道为什么是那个结果,为什么??

追答

第一个sizeof(a[100] )这个就是求第100个元素的大小 不用说 int的4 char的1 (32位系统下

第二个是 sizeof(&a) 取数组地址 也就是数组 一次求出是数组占内存大小

第三个 sizeof(&a[0])区第一个元素的地址 求第一个i元素大小 额 明白了么

追问

不是a[99]代表第100个吗?那a[100]怎么又代表第100个了?谢谢回答

本回答被提问者和网友采纳
第3个回答  2012-06-18
你的a[100]是什么类型的你不说什么类型怎么帮你求追问

int类型,结果我会运行,我主要是想知道每个代表什么意思?为什么等于4,400,4,你能分析一下吗,谢谢

追答

sizeof(a[100]),你是求a[100]这一个地址内存中所占的字节数;而sizeof(&a)代表求a[0]~a[99]这一段地址所占的字节数,sizeof(&a[0])这个是代表你在求a[0]这个地址内的数据所占字节数

追问

谢谢回答,已明白,thank you!

追答

呵呵

相似回答