怎么不能通过指针赋值

来源:百度知道 编辑:UC知道 时间:2024/06/25 00:23:11
char *s1="BD";
*s1='a';
为什么会错

s1是个指针占4个字节的一个地址而已,本身不能存储数据,是存储一段内存的地址的。所以赋值的时候必须保证它是一段有效内存的地址,也就是必须申请一段内存空间。

char *P="HELLO";
在VC编译后,相当于
const char *p = "HELLO";

所以*p这里相当于一个常量,是不能被修改的,你的s1是一样的道理

这是一个字符串常量

值不能改变