char buf[100];
sizeof(buf) ;//结果等于100
/************************/
char *PP = buf;
sizeof(PP);//结果等于4
/*************************/
struct B
{
char buf[100];
}Buf;
struct B *BB = &Buf;
sizeof(BB->buf);//结果等于100,而不是4
为什么会这样????
为什么
char *PP = buf;
sizeof(PP);//结果等于4
结果是4呢???
因为sizeof(PP)获取的是PP所占用的内存空间,PP是个指针,指向buf这个数组的首地址,他占用的内存空间是4
sizeof(BB->buf)取的是BB这个struct里面buf成员所占内存空间 他是一个长度为100的char数组 所占空间是100*1
你可以看下这个文章,是讲数组名和指针的区别的:
http://soft.yesky.com/242/2082242.shtml
BB->buf为什么不是呢???
追答BB->buf是指BB这个struct里面buf成员