char *a={"abc"}; a 是指针。
char c[]={"abc"}; c 是数组。
初始化后 sizeof(a) 为 4,strlen(a) 为3。
同样,sizeof(c) 为 4,strlen(c) 为3。
在语句中有时一样,有时不一样。
例如:
char *a={"abc"};
char c[]={"abc"};
char b[]={"123"};
int L;
L = sizeof(a);
printf("a: %d %s\n",L, a);
a=b; // a 允许
L = sizeof(a);
printf("a: %d %s\n",L, a);
L = sizeof(c); // a,c 方法一样
printf("c: %d %s\n",L, c); // a,c 方法一样
// wrong c=b; // c 不允许
strcpy(c,b); // c 只能这样做
L = sizeof(c);
printf("c: %d %s\n",L, c);
注意 a=b; 允许。c=b; 不允许 。 只能 strcpy(c,b);
输出:
a: 4 abc
a: 4 123
c: 4 abc
c: 4 123
追问char c[]={"abc"}; 单独一个c是指向c[0]的指针么?
追答是的。单独一个c是 &c[0]。不能做“左值”。
本回答被提问者和网友采纳