const char * 转 char * 疑问
const char *s="hello world";
char *p = (char *)(s);
p[1] = 'x';
std::cout<<p<<std::endl; //运行时错误
char s[]="hello world";
const char * t= s;
char *p = (char *)(t);
p[1] = 'x';
std::cout<<p<<std::endl; //hxllo world
[解决办法]
const char *s="hello world"; 这么申明字符串本来就没法修改。
char s[]="hello world"; 这么申明才可以修改。
[解决办法]
const char *s="hello world";
这样s是一个指针,指向一块只读区域,该区域最开始处是"hello world\0",程序无法修改只读区域的内容;
char s[]="hello world";
这样s是一个数组,或者说数组名,该数组在编译连接后确定为含12个元素(包括结束符'\0'),指针转换后,可以修改数组中元素内容