可能重复:
What is the difference between char a[] = “string”; and char *p = “string”;
int main() {
char *p="ayqm";
char c;
c=++*p;
printf("%c",c);
return 0;
}
其输出为a
。请参阅http://codepad.org/cbNOPuWt但我认为自b
以来输出应为c = ++*p
。
任何人都可以解释输出的原因吗?
答案 0 :(得分:6)
当然,这是未定义的行为。任何事情都可能发生。
您正在尝试修改字符串文字,这是非法的。
如果你这样做,例如
char c = *p;
++c;
你会看到正确的输出。
p
的实际类型应为const char*
,在这种情况下,您会收到编译错误。