c++字符串常量的问题!!
#include <iostream.h>
int main()
{
char a[]= "hello ";
a[0] = 'X ';
cout < <a < <endl;
char *p= "world "; // 注意p指向常量字符串
p[0] = 'X '; // 编译器不能发现该错误 cout < <p < <endl;
return 0;
}
这段程序有什么问题啊?!!在c++高质量编程上看到的!
如果把a[0] = 'X ';和 p[0] = 'X ';都注释掉肯定没问题!
只注释p[0] = 'X ';也正常!,但是这两句都不注释的话,就有问题了!!
只打印 "Xello ",然后还系统出现问题,要关闭控制台窗口!
[解决办法]
char a[]= "hello ";
a[0] = 'X ';//a是个常量地址,但是内容可以修改,这个没问题
cout < <a < <endl;
char *p= "world "; // 注意p指向常量字符串
p[0] = 'X '; //p指向常量字符串,修改常量当然不行