0x000F6C08 处有未经处理的异常

#include
using namespace std;

int main()
{
char *str = "Linux";
*str = 'T'; //这句话出错了
cout << str << endl;
return 0;
}
错误:0x000F6C08 处有未经处理的异常(在 hannuota bahuanghou.exe 中): 0xC0000005: 写入位置 0x000FDA8C 时发生访问冲突。
就这一小段代码出错了 我知道出错的地方 但不知道原因

望各位指点指点

4个回答

char *str = "Linux"; 这句话相当于申明了一个字符串常量,不在堆栈中,而是存储在常量区,常量区的内容是不允许被修改的,你可以申明为字符串数组,
存储在堆栈中,可以修改。

char *str = "Linux"之后,str内容不可以在变

char *str = "Linux";//"Linux"在字符常量区
*str = 'T'; //*str在这相当于str[0],字符常量区不可改变

常量字符串不允许修改,修改就会被编译器异常出错

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐