sizeof(array)/ sizeof(int)

时间:2013-05-21 03:20:46

标签: c arrays sizeof

在一个函数中,我声明了一个数组:

int char_count_array[118] = {0};

稍后,我将此数组传递给函数并计算以下内容:

int xx = sizeof(char_count_array); 
int xy = sizeof(char_count_array)/sizeof(int);  

然而,我得到的结果是: xx = 4 xy = 1

我以为我会得到: xx = 472(118 * 4)xy = 118(472/4)

有人知道我在这里做错了吗?

2 个答案:

答案 0 :(得分:2)

如果您将其传递给某个功能,则很可能会以int*而不是int[118]进行传递。所以你的sizeof正在返回一个指针的大小。当您将C数组传递给函数时,通常也会传递元素数。

my_func( arr, sizeof(arr)/sizeof(arr[0]) );

答案 1 :(得分:0)

最有可能的是,当您将数组传递给函数时,实际上是在您的计算机上传递了pointer,其大小为4。如果您需要知道数组的大小,则需要将大小作为另一个参数传递给函数。