问题描述:
int main()
{
char *g="sdhgie";
g[2]--;
cout<<g;
return 0;
}
就会出错,但是char *g改成char g[7]就对了
问题解答:
char *g="sdhgie";这种写法会使"sdhgie"这个字符串常量被放在静态数据区,常量是无法修改的。
char *g="sdhgie";这里的"sdhgie"是常量,g是指向常量,所以里面的内容不能改变的。
因为char * g 和 char g[] 不同,两者使用的内存区是不同的,前者在代码段,后者在数据段!