C言語の勉強中なのですが、ポインタのところで苦労しています。
次のような関数を作成し、main関数で実行したところ、sizeof(array)は4になりました。
main関数内で同じようにsizeof(array)を表させると配列全体のサイズが表示されますよね。
関数の仮引数として配列を書いても、実際には配列の先頭要素を指すポインタとして扱われるので
関数には&array[0]が渡され、関数は配列ひとつあたりのサイズを基に他の配列の要素のアドレスを
受け取るで合ってますよね?
でもmain関数内ではsizeof(array)は配列全体のサイズを返すのに、関数内では配列ひとつあたりのサイズしか返さないのはどうしてなのでしょうか?
int sum_array( int array[], int num ){
int i;
int sum = 0;
for( i = 0; i < num; i++ ){
sum += *(array+i);
}
printf("sum = %d\nsizeof(array)=%d\n",sum,sizeof(array));
return sum;
}
お礼
ありがとうございます。 配列のサイズを調べるために sizeof を使うときは、同じ関数内で宣言していないということいけないということですね。