0

可能重复:
char a[] = “string”; 之间有什么区别?和 char *p = “字符串”;

int main() {
 char *p="ayqm";
 char c;
 c=++*p;
 printf("%c",c);
 return 0;
}

它的输出是a。见http://codepad.org/cbNOPuWt但我觉得输出应该是bsince c = ++*p. 任何人都可以解释输出的原因吗?

4

1 回答 1

6

当然,这是未定义的行为。任何事情都有可能发生。

您正在尝试修改字符串文字,这是非法的。

如果你这样做,例如

char c = *p;
++c;

你会看到正确的输出。

的实际类型p应该是const char*,在这种情况下你会得到一个编译器错误。

于 2012-11-20T04:41:04.987 回答