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