C:计算int类型数组的实际大小

时间:2014-03-02 10:39:42

标签: c arrays int sizeof

我在获取 int-type 数组的实际大小时遇到问题。

注意:我对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;
}

1 个答案:

答案 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