奇怪的核心转储问题

时间:2010-10-13 22:39:37

标签: c

我的这段代码是倾销核心:

int main(int argc,char *argv[])
{
   char *p = "onnm";
   printf("%c\n",++*(p++));
   return 0;
}

printf行可能是什么原因?

2 个答案:

答案 0 :(得分:3)

字符串文字是只读的,你不能改变它们。

使用例如char p[] = "onnm";

答案 1 :(得分:1)

由于C语言的“语言标准不一致”,您可以像这样编码。 如,

const char const_buff[] = { 'o','n', 'n', 'm', '\0' }; // OK

char* pArray = const_buff;            // not OK

在同一行中它应该不允许你编译,

char *p = "onnm";

但是你可以编译,所以允许你改变只读字符串的错误。

++ * ( p++)