注意:我对char-type数组没有任何问题,我得到了我期望的输出。
示例,拥有此声明,int arr[3]
并使用sizeof(arr)
将有一个肯定会变化的输出,它可能是3,6,12等......取决于位系统。
那么我将如何在这样的代码上得到我的数组的实际大小:Ideone Code Here
#include <stdio.h>
int countSize[3]={1,2,3};
int main() {
printf("%d",sizeof(countSize));
return 0;
}
答案 0 :(得分:2)
通过实际大小看起来,你的意思是数组的元素。由于sizeof(countSize)
以字节为单位给出了数组的大小,所以你只需要将它除以每个元素的大小,如下所示:
printf("%zu\n", sizeof(countSize) / sizeof(int));
或者更好的是,使用sizeof(countSize[0]
,因为数组的类型可能会有所不同:
printf("%zu\n", sizeof(countSize) / sizeof(countSize[0]));
使用char
数组时,您得到了预期的结果,因为sizeof(char)
始终为1
。