2

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

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)

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

4

2 回答 2

4

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

my_func( arr, sizeof(arr)/sizeof(arr[0]) );
于 2013-05-21T03:23:47.783 回答
0

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

于 2013-05-21T03:23:49.560 回答