在一个函数中,我声明了一个数组:
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)。
有人知道我在这里做错了吗?
答案 0 :(得分:2)
如果您将其传递给某个功能,则很可能会以int*
而不是int[118]
进行传递。所以你的sizeof
正在返回一个指针的大小。当您将C数组传递给函数时,通常也会传递元素数。
my_func( arr, sizeof(arr)/sizeof(arr[0]) );
答案 1 :(得分:0)
最有可能的是,当您将数组传递给函数时,实际上是在您的计算机上传递了pointer
,其大小为4
。如果您需要知道数组的大小,则需要将大小作为另一个参数传递给函数。