C++中C风格字符串的使用

char *p = "abc";
p[1] = 'x';
cout << p[1] << endl;
return 0;
以上代码会产生运行时错误,去掉p[1] = 'x';或者把p定义改成char p[] = "abc"就能正常运行。
char *p = "abc";
cout << p[1] << endl;
return 0;//或char p[] = "abc";
p[1] = 'x';
cout << p[1] << endl;
return 0;
这是因为char *p = "abc"把"abc"放在常量区,而char p[] = "abc"把"abc"放在变量区。
怎样让编译器识别这个错误?char *p = "abc"是C语言的遗留风格,建议使用字符字面值定义字符指针时总是在前面加上const。如下定义:
const char *p = "abc";
这样即使后面有要修改其值的语句编译器也会报错而不是产生运行时错误。
 
 
-----------------------转自 AngelsThanatos

转载于:https://www.cnblogs.com/ForFreeDom/archive/2012/04/14/2447162.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值