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

関数に渡す場合は、 のint*代わりに as を使用する可能性が最も高いですint[118]。したがってsizeof、ポインターのサイズを返しています。C 配列を関数に渡す場合、要素数も渡すのが慣例です。

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

ほとんどの場合、関数に配列を渡すときは、実際にはマシン上pointerのサイズの を渡してい4ます。配列のサイズを知る必要がある場合は、サイズを別のパラメーターとして関数に渡す必要があります。

于 2013-05-21T03:23:49.560 に答える