weixin_36514332 2016-12-02 02:17 采纳率: 100%
浏览 1557
已采纳

c语言中,为什么不能对字符指针变量指向的字符串再赋值?

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

  • 写回答

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的指向是能修改的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?