下面是代码(用gcc编译):
#include <stdio.h>
#include<string.h>
int main()
{
char *c="hello";
printf("1) sizeof 'hello' : %d \n",sizeof("hello"));
printf("2) sizeof '*c' : %d \n",sizeof(*c));
printf("3) sizeof 'c': %d \n",sizeof(c));
printf("4) sizeof '&c' : %d \n",sizeof(&c));
printf("5) sizeof '&hello': %d \n",sizeof(&("hello")));
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给定程序的输出:
1) sizeof 'hello' : 6
2) sizeof '*c' : 1
3) sizeof 'c': 8
4) sizeof '&c' : 8
5) sizeof '&hello': 8
Run Code Online (Sandbox Code Playgroud)
因此,对于情况1)和2),为什么这个输出没有问题.但对于剩下的情况,即3),4)和5),为什么sizeof算子给出8?
据我所知&c,c并&"hello"代表相同的东西,即一组字符(即c指向'你好')并*c代表一个字符(即*c …