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

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

    点赞 评论
  • shen_wei 2016-12-02 03:16

    指针 和 数组 的区别就是申请空间的问题。。指针只是指向而已,数组是连续地址空间。。

    点赞 评论
  • jhcconan614 2016-12-02 09:38

    指针和数组是两个不同的概念,前一个定义了一个指针和一个字符串常量,后面你有将一个字符赋给一个数组元素,很显然是不行的,

    点赞 评论

相关推荐 更多相似问题