sizeof(array)/ sizeof(int)

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

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)

谁会知道我在这里做错了什么?

如果你将它传递给一个函数,它最有可能以int*而不是int[118] 。 所以你的sizeof返回一个指针的大小。 当您将C数组传递给函数时,通常也传递元素的数量。

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

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