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