中級 › sizeofが配列の要素数ではなくポインタのサイズを返す › パターン2
sizeofが配列の要素数ではなくポインタのサイズを返す
配列に対するsizeofは配列全体のバイト数を返しますが、関数の引数として渡された配列はポインタに変わっているため、同じsizeofが8(ポインタのサイズ)を返してしまいます。
1 #include <stdio.h> 2 3 int main(void) { 4 double prices[4] = {9.5, 3.2, 7.1, 4.4}; 5 double *p = prices; 6 int count = sizeof(_______) / sizeof(double); ^ 7 printf("%d\n", count); 8 return 0; 9 }
出力: 1期待: 4
空欄を埋めてコンパイル・実行を通す
ポインタ変数のsizeofは指している型によらず常にポインタ自身のサイズです。要素数を得るには配列の変数名に直接sizeofを使います。
次の問題