我有一个函数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