パラメータを持つ関数 A がありchar *
ます。では、 buf のサイズを計算A()
するために使用sizeof
しましたが、i686 マシンでは 8、armel マシンでは 4 になりました。なぜ128ではないのですか?スニペットは次のとおりです。
void A(char *p)
{
printf("sizeof p is %d\n", sizeof(p));
}
int main(void)
{
char buf[128];
printf("sizeof buf is %d\n", sizeof(buf));
A(buf);
return 0;
}
結果は次のようになります(i686の場合):
sizeof buf is 128
sizeof p is 8
私にその理由を教えてください。