比如说这段:
char *a="hello";
a[2]='c'; //就是这个语句为什么不正确啊

c语言中,为什么不能对字符指针变量指向的字符串再赋值?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- ailar1204 2016-12-02 02:25关注
char* a={"hello"}为什么不能修改,这个要涉及进程占用的内存分段,大概分为代码区,只读区,全局区,堆区,栈区。"hello"作为一个字符串字面值,是被放在只读区,只读顾名思义就是不能修改的。char* a="hello",相当于把hello的地址赋给了a,故而不能对a指向的内容进行修改。char a[]="hello",这样赋值的就是一个字符数组。字符数组a是在栈区里申请的一个空间给a,然后把只读区的"hello"进行了一次复制再赋值给a,这样a的指向是能修改的。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 3无用 1