char * psz="abc";
psz[0]='d';
这段程序为什么会有错,详细解释下!

解决方案 »

  1.   

    char * psz="abc"; 
    =====
    这个是常量,无法改写的。
      

  2.   

    char * psz="abc"; 
    常量字符串,在内存中分配在静态存储区,不允许用户修改。C/C++中内存区域划分大总结
    http://sunjd2001.blog.163.com/blog/static/111294452009923105224826/
      

  3.   

    char * psz="abc"; 
    "abc" 为字符串常量,有地址,但地址在内存中分配在静态存储区,假设为0x0042601c; 
    char * psz="abc" 的意思是将"abc" 的存储位置首地址 即0x0042601c 分配给psz;该地址字符串为只读常量 只能读取 不能修改
    所以一下语句char a =psz[0]; //a='a'; 不会出错但赋值语句
    psz[0]='a';   //出错 只读常量 无法赋值