指针

dcuzhang 2008-04-11 12:00:39
那位朋友能帮忙解释一下,谢谢了

#include<iostream>
using namespace std;

int main()
{
char a[] = "Hello!";

a[0] = 'X';

cout << a << endl;

char *p = "word!";

p[0] = 'X'; // the program crashed here

cout << p << endl;

system("pause");
return 0;
}
...全文
109 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dcuzhang 2008-04-14
  • 打赏
  • 举报
回复
谢谢各位朋友的回答, 周末上班没上网,
追加分,只能加100 :-(
分就给一楼了,但3,5,6,7,8 的回答也很好。
感谢大家的回答帮助 :-)
dcuzhang 2008-04-11
  • 打赏
  • 举报
回复
等明天在结贴,给二位追加点分,谢谢回答
dcuzhang 2008-04-11
  • 打赏
  • 举报
回复
谢谢二位的回答
jinwei1984 2008-04-11
  • 打赏
  • 举报
回复
hello 是在栈中分配的空间,运行时确定的

world是在编译的时候就确定了的 在常量区
dcuzhang 2008-04-11
  • 打赏
  • 举报
回复
谢谢, 但为什么world 会在常量区, 而"hello" 不是呢??
Treazy 2008-04-11
  • 打赏
  • 举报
回复
"word!"
存在于常量区,该区无法修改是只读的

你用给p[0]赋值就是在修改这个区域,当然要阻止你!
shaoze5 2008-04-11
  • 打赏
  • 举报
回复
你把编译选项调整一下也可以做。
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main()
{
char a[] = "Hello!";

a[0] = 'X';

cout < < a < < endl;

char *p = "word!"; //最好分开写,指针先单独定义,之后再为其赋值;

p[0] = 'X'; // the program crashed here

cout < < p < < endl;

system("pause");
return 0;
}
zsxcn 2008-04-11
  • 打赏
  • 举报
回复
char* 和char[]变量是不一样的

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧