在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() 运算符返回的是一个类型或变量所占用的内存空间大小,单位为字节。
可是我运行程序显示sizeof(&a)是400啊,为什么地址是4,a是int类型
追答a是int类型的话,看来你的机器,int的长度为4。有的机器int长度为2。
sizeof(&a)的话,我感觉有些问题,现在还不能判断。
另外,&是地址,地址就是4位。。
谢谢你的回答,有人是这么回答的,sizeof(&a) 取数组地址 也就是数组 一次求出是数组占内存大小
谢谢你的回答,int类型,我也运行程序了,我就是想知道为什么是那个结果,为什么??
追答第一个sizeof(a[100] )这个就是求第100个元素的大小 不用说 int的4 char的1 (32位系统下
第二个是 sizeof(&a) 取数组地址 也就是数组 一次求出是数组占内存大小
第三个 sizeof(&a[0])区第一个元素的地址 求第一个i元素大小 额 明白了么
不是a[99]代表第100个吗?那a[100]怎么又代表第100个了?谢谢回答
本回答被提问者和网友采纳int类型,结果我会运行,我主要是想知道每个代表什么意思?为什么等于4,400,4,你能分析一下吗,谢谢
追答sizeof(a[100]),你是求a[100]这一个地址内存中所占的字节数;而sizeof(&a)代表求a[0]~a[99]这一段地址所占的字节数,sizeof(&a[0])这个是代表你在求a[0]这个地址内的数据所占字节数
追问谢谢回答,已明白,thank you!
追答呵呵