我有一個函數A,它有一個char *
參數。在A()
中,我用sizeof
來計算buf的大小,但是我在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
請告訴我原因。
請勿使用%d作爲sizeof(),而應使用%zu。 %d只會導致sizeof()的麻煩,因爲它的size_t不是int。 – Thomas