指针修改字符串字面量( 二 )
char * str3 = "abc";
而系统直接把一个指向char的指针给了我,到底这个string有多长呢。我们不知道。但是因为我们会一直将这个str变量当成string来用,所以系统不可能允许我们做把最后一位的’\\0’删掉(无论是有意的还是无意的)这种事情。所以,这个str是绝对不能被更改的(好像是这个原因吧,反正至少是原因之一)
■网友
不能修改字符串字面量。
■网友
【指针修改字符串字面量】 当使用char *p="abc"的时候 p指向的字符串"abc"是不允许修改的(编译器是这样认为的)。理由:如果有另外一个char str="abc",编译器出于节省内存的需要,很可能会只保存一个"abc",让*p和*str都指向"abc",这个时候如果通过p改变字符串,str可能也会跟着改变,但这显然是不允许的。有些编译器会把"abc"保存在roDATA区(只读数据区),这个时候,如果试图通过p修改变量,会被阻止。
■网友
后面的程序中,ptr是保存了一个字符串常量的地址,字符串常量是存放在只读数据段中的,所以*ptr是不可以修改的。前面的程序,你修改的是数组中的内容,所以修改成功了。
推荐阅读
- 怎样对别人的代码进行适当修改使他永远也找不到问题出在哪
- C语言 指针引用数组的地址问题
- 为啥dropbox 分享占据所有分享人员的空间并让所有人拥有修改权限
- 银行存折在非户主本人的情况下怎样修改密码
- 为啥没有黑客修改支付宝余额
- |江苏将修改或废止一批民法典涉及法规
- 物业服务|江苏将修改或废止一批民法典涉及法规
- 江苏将修改或废止一批民法典涉及法规
- 物业费|催物业费不得停水拉电断气!江苏修改清理多部地方法规
- 电梯|对照民法典 江苏修改清理多部地方立法