注册 登录
编程论坛 C++教室

字符串:为什么这样操作指针得不到需要的结果

zxphxh 发布于 2016-12-02 11:10, 1378 次点击
程序代码:

char *p, *strText = "123456789";
p = strText;   
printf("1:p=%s strText=%s\n", p, strText);//输出:123456789
p[3] = '\0';
printf("2:p=%s strText=%s\n", p, strText);//输出:123
strText[3] = '\0';
printf("3:p=%s strText=%s\n", p, strText);//输出:123

只有本站会员才能查看附件,请 登录
1 回复
#2
rjsp2016-12-02 11:18
char* strText = "123456789";
是不好的,它的存在只是为了兼容旧代码,正确的写法是
const char* strText = "123456789";

-----------------------------------

char* strText = "123456789";
strText[3] = '\0'; // 这里strText实际指向一个常字符串,修改常字符串属于未定义行为
1