c语言关于数组的一个问题

c语言关于数组的一个问题49题,str不是地址常量吗,为什么不能+3... c语言关于数组的一个问题49题,str不是地址常量吗,为什么不能+3 展开
 我来答
百度网友fe016f1
2017-12-09 · TA获得超过802个赞
知道小有建树答主
回答量:467
采纳率:77%
帮助的人:306万
展开全部
纠正楼上一个说法,注意此处是个语义错误但并不是语法错误;实际编译中编译器可能会出warning但编译是可以通过的,因为c是个弱类型语言,指针和char都被视作数值类型,能够进行各类自动转换。
关于题主的问题,注意此处加的是'3'而不是3,即ascii码的51。str偏移51实际造成数组越界。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
庄政警
2017-12-09 · TA获得超过9916个赞
知道大有可为答主
回答量:1113
采纳率:94%
帮助的人:886万
展开全部
c=str+'3';
这个语句有两处错误,一处逻辑错误,一处语法错误
str+'3'就是str+51, str+51从语法上看没有错误,就是返回从str开始偏移51个char单位的地址,但str数组定义时长度是8,所以str+51是越界的地址,这是逻辑错误
c是个char,而str+51是个char*,是个地址,这是不能给c赋值的,这个是语法错误
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式