引用知乎上的一个回答,很直观
char a[]="hello";
char *bPtr;
char b[]="good bye!";
bPtr=b;
printf("%d\n",sizeof(a)); // sizeof(char[6])
printf("%d\n",sizeof(&b)); // sizeof(char(*)[10])
printf("%d\n",sizeof(*b)); // sizeof(char)
printf("%d\n",sizeof(b)); // sizeof(char[10])
printf("%d\n",sizeof(&bPtr)); // sizeof(char**)
printf("%d\n",sizeof(*bPtr)); // sizeof(char)
printf("%d\n",sizeof(bPtr)); // sizeof(char*)
作者:Sunchy321
链接:http://www.zhihu.com/question/32170922/answer/54929467
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
下面解密上面的答案,在电脑上实际运行过!
printf("%d\n",sizeof(a)); // sizeof(char[6]) //6
printf("%d\n",sizeof(&b)); // sizeof(char(*)[10]) //4
printf("%d\n",sizeof(*b)); // sizeof(char) //1
printf("%d\n",sizeof(b)); // sizeof(char[10]) //10
printf("%d\n",sizeof(&bPtr)); // sizeof(char**) //4
printf("%d\n",sizeof(*bPtr)); // sizeof(char) //1
printf("%d\n",sizeof(bPtr)); // sizeof(char*) //4