为什么C++编译没有错误,但是调试的时候不对

(2)#include<iostream>usingnamespacestd;intmain(){chara[]="abc";char*b="ABC";cout<<siz... (2)
#include <iostream>
using namespace std;
int main()
{
char a[] = "abc";
char *b = "ABC";
cout << sizeof(a) <<endl;
cout << sizeof(b) <<endl;

a[0] = 'A';
b[0] = 'x';

cout << a << '\t' << (int)a << endl;
cout << b << '\t' << (int)b << endl;
cout << &a << '\t' << (int)&a << endl;
cout << &b << '\t' << (int)&b << endl;
cout << *a << '\t' << (int)*a << endl;
cout << *b << '\t' << (int)*b << endl;
return 0;
}
展开
 我来答
wanglixin1001
2012-12-05 · TA获得超过4173个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:851万
展开全部
"ABC"这个常量字符串存储在程序的常量存储区域,是不能修改的。
所以char *b="ABC";然后通过b[0]='x'来修改该常量字符串就会出错。
编译的时候只检查语法是否符合语言的语义要求,编译通过不代表执行正确。
追问
恩恩。谢谢哈~能不能告诉我你的QQ号啊
nscboy
2012-12-06 · TA获得超过1054个赞
知道小有建树答主
回答量:826
采纳率:0%
帮助的人:548万
展开全部
char *b = "ABC"; 这表明b所指向的字符串"ABC"是常量.你使用b[0] = 'x';对常量进行修改必行是错误的.计时能通过编译,也会执行错误.导致非法操作.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式