为什么字面量字符串初始化复制给数组时可以被修改,复制给指针不能被修改?

来源:互联网  时间:2016/7/19 12:03:06

关于网友提出的“ 为什么字面量字符串初始化复制给数组时可以被修改,复制给指针不能被修改?”问题疑问,本网通过在网上对“ 为什么字面量字符串初始化复制给数组时可以被修改,复制给指针不能被修改?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 为什么字面量字符串初始化复制给数组时可以被修改,复制给指针不能被修改?
描述:

      1 #include
      2
      3 int main(int argc, char *argv[])
      4 {
      5     //"hello world!"不是常量吗?为什么可以通过p[i]和*(p+i)来修改。
      6     char p[] = "hello world!";
      7     //p[2] = 'L';
      8     //printf("%s\n", p);
      9     //*(p+2)='e';
     10     //printf("%s\n", p);
     11     
     12     char *str = "goodbye world!";
     13     /*** 同样,*str 通过 str[i] 和 *(str+i_) 来修
     14          改字符串时,能够编译通过,执行时发生段错误。***/
     15     //str[2] = 'Z';
     16     //printf("%s\n", str);
     17     //*(str+2) = 'Z';
     18     //printf("%s\n", str);
     19     
     20     return 0;
     21 }  


解决方案1:

分配的位置不同吧,数组是分配在栈上的,而指针形式貌似是分配在全局区还是什么别的地方的

上一篇集群中有台机器SSH免密登陆不好使,其它机器都可以
下一篇如何将json-cpp库移植到arm-linux下使用??100分!!!跪求!
明星图片
相关文章
《 为什么字面量字符串初始化复制给数组时可以被修改,复制给指针不能被修改?》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)