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]) );
最有可能的是,当您将数组传递给函数时,实际上是在计算机上传递了一个大小为4
的pointer
。 如果您需要知道数组的大小,则需要将大小作为另一个参数传递给函数。