重複の可能性:
C プログラミング言語の配列のサイズ?
sizeof(param_array) がポインタのサイズなのはなぜですか?
void printSizeOfArray(int a[])
{
printf("%lu\n", sizeof(a));
}
int main()
{
int it;
int a[4] = {0};
printSizeOfArray(a);
return 0;
}
コードを実行すると 8 が表示されます。配列へのポインターが void 型のポインターであるのはなぜですか?
そして、配列へのポインターが void 型の場合、なぜ、次のように書くと:
int *it;
int a[4] = {0};
it = a;
printf("%lu\n", sizeof(it));
それも正常に動作しますか?でポイントするにはどうすればよいint
ですか?
また、2 番目に 4 ではなく 8 を出力するのはなぜですか? 配列 ( void*
) へのポインタであり、 ではありませんint
。