首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么要增加指针崩溃所指向的数据?

为什么要增加指针崩溃所指向的数据?
EN

Stack Overflow用户
提问于 2011-07-16 04:10:33
回答 1查看 1K关注 0票数 2

可能重复:

C/C++ Char Pointer Crash

代码语言:javascript
代码运行次数:0
运行
复制
char *p = "atl";
char c;
c = ++*p; //crashing here

为什么它会崩溃?

我知道内存不是创建的,因为指针增量应该是对数据进行的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-16 04:13:45

p指向const数据,这是字符串文本"atl";这意味着*p不能更改。但是你试图通过编写++*p来改变它。这就是为什么它在运行时崩溃的原因。

事实上,大多数编译器在编写char *p ="atl"时都会发出警告。你应该写:

代码语言:javascript
代码运行次数:0
运行
复制
const char *p ="atl";

如果是这样写的,那么编译器在编译时编写++*p时会出现错误。在编译时检测错误比在运行时检测错误要好。请参见此处的编译错误:

编译错误是:

prog.cpp:7: error:只读位置‘*p’的增量

但是,如果你写

代码语言:javascript
代码运行次数:0
运行
复制
 char p[] = "atl";
 char c = ++*p;  //ok

那现在是正确的。因为现在p是一个数组,它是由字符串文本"atl"创建的。它不再指向字符串文本本身。这样就可以更改数组的内容。

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

https://stackoverflow.com/questions/6715260

复制
相关文章

相似问题

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