在函数中,我声明了一个数组:
int char_count_array[118] = {0};稍后,我将这个数组传递给一个函数并计算如下:
int xx = sizeof(char_count_array);
int xy = sizeof(char_count_array)/sizeof(int); 然而,我得到的结果是: xx =4XY=1
我想我会得到: xx = 472(118 * 4) xy = 118 (472 / 4)。
有人知道我在这里做错了什么吗?
发布于 2013-05-21 03:23:47
如果要将它传递给一个函数,它很可能以int*而不是int[118]的形式进入。因此,您的sizeof将返回指针的大小。当您将C数组传递给函数时,通常也传递元素的数量。
my_func( arr, sizeof(arr)/sizeof(arr[0]) );发布于 2013-05-21 03:23:49
最有可能的情况是,当您将数组传递给函数时,您实际上是在传递一个pointer,该4在您的计算机上具有4的大小。如果需要知道数组的大小,则需要将大小作为另一个参数传递给函数。
https://stackoverflow.com/questions/16661605
复制相似问题