首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

const char * 转 char * 疑点

2013-10-01 
const char * 转 char * 疑问const char *shello world char *p (char *)(s)p[1] xstd::cout

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'),指针转换后,可以修改数组中元素内容

热点排行