需要C输出的说明

时间:2012-11-20 04:39:19

标签: c pointers

  

可能重复:
  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。 任何人都可以解释输出的原因吗?

1 个答案:

答案 0 :(得分:6)

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

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

如果你这样做,例如

char c = *p;
++c;

你会看到正确的输出。

p的实际类型应为const char*,在这种情况下,您会收到编译错误。