发布
社区首页 >问答首页 >指向字符数组的指针出现运行时中断错误

指向字符数组的指针出现运行时中断错误
EN

Stack Overflow用户
提问于 2011-08-16 16:08:39
回答 2查看 325关注 0票数 1

C++ -此程序在第2行显示运行时中断错误。

代码语言:javascript
代码运行次数:0
复制
char * ptr = "hello";
(*ptr)++;            // should increment 'h' to 'i'
cout<<ptr<<endl;     // should display 'iello' 

Test.exe中0x004114b0处的未处理异常: 0xC0000005:写入位置0x00417830的访问冲突。

你知道为什么它会给出这个错误吗?然而,如果我运行下面的代码,它会工作得非常好。

代码语言:javascript
代码运行次数:0
复制
char arr[] = "hello";
char * ptr = arr;
(*ptr)++;           // increments 'h' to 'i'
cout<<ptr<<endl;    // displays 'iello'
EN

回答 2

Stack Overflow用户

发布于 2011-08-16 16:10:27

因为您正在尝试更改只读内存。即使这是一个C++问题,也有一个足够的C FAQ

基本上,当说char *ptr = "hello"时,编译器可以自由地将"hello“放在只读内存中,因此尝试写入它是不安全的。

另一个C FAQ可能会很有用:

这些初始化之间的区别是什么?

char a[] =“字符串文字”;char *p =“字符串文字”;

票数 3
EN

Stack Overflow用户

发布于 2011-08-16 16:12:59

当您声明char * ptr =“hello”时,这意味着ptr指向一个常量字符串

当您说ptr++时,您正在尝试更改不正确的基地址

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7075257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档