次のコードは...
void foo(char* x)
{
int i;
int len = sizeof(x)/sizeof(x[0]);
printf("len: %d\n", len);
for(i=0; i<len; i++){
printf("i: %d, v: %x\n", i, x[i]);
}
}
...次のように呼び出される場合:
char bar[] = {0xDE, 0xAD, 0xBE, 0xEF};
foo(bar);
...出力:
len: 8
i: 0, v: ffffffde
i: 1, v: ffffffad
i: 2, v: ffffffbe
i: 3, v: ffffffef
i: 4, v: ffffffff
i: 5, v: 7f
i: 6, v: 0
i: 7, v: 0
これに当てはまるかどうかは正確にはわかりませんが、SO に関する同様の投稿を読んでみると、配置の問題のようです (私は 64 ビット マシンを使用しています)。
ポインタはありますか?
ありがとう。