c语言中,为什么不能对字符指针变量指向的字符串再赋值?
问题描述:
比如说这段:
char *a="hello";
a[2]='c'; //就是这个语句为什么不正确啊
答
char* a={"hello"}为什么不能修改,这个要涉及进程占用的内存分段,大概分为代码区,只读区,全局区,堆区,栈区。"hello"作为一个字符串字面值,是被放在只读区,只读顾名思义就是不能修改的。char* a="hello",相当于把hello的地址赋给了a,故而不能对a指向的内容进行修改。char a[]="hello",这样赋值的就是一个字符数组。字符数组a是在栈区里申请的一个空间给a,然后把只读区的"hello"进行了一次复制再赋值给a,这样a的指向是能修改的。
答
指针 和 数组 的区别就是申请空间的问题。。指针只是指向而已,数组是连续地址空间。。
答
指针和数组是两个不同的概念,前一个定义了一个指针和一个字符串常量,后面你有将一个字符赋给一个数组元素,很显然是不行的,