一道C语言选择题

若有定义char*x="abcdefghi";以下选项中正确运用了strcpy函数的是()A.chary[10];strcpy(y,x[4]);B.chary[10];s... 若有定义char *x="abcdefghi";以下选项中正确运用了strcpy函数的是() A.char y[10];strcpy(y,x[4]); B.char y[10];strcpy(++y,&x[1]); C.char y[10],*s;strcpy(s=y+5,x); D.char y[10],*s;strcpy(s=y+1,x+1); 请作答,并且请告诉我赋值表达式的值是怎么规定的?例如:s=y+1;这个赋值表达式的值是多少? 展开
 我来答
频姝泰吉星
2019-12-17 · TA获得超过1137个赞
知道答主
回答量:5
采纳率:0%
帮助的人:4191
展开全部
什么叫从左到右呢。
您看看。(a=3*5,a*4,a+5)
这是逗号表达式。从左到右计算,取最后一个逗号后面的东西为结果。
执行的过程是这样的:
a=3*5=15,这时候a是15了。a*4,这句只是a*4,得到60,而a的值依然是15,然后a+5,结果是20
就输出20咯。第二个表达式a*4是有计算的。但是没有赋值给a呀。所以没什么影响。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
瞿芙吾涵蕾
2020-08-17 · TA获得超过1108个赞
知道小有建树答主
回答量:1308
采纳率:100%
帮助的人:6.8万
展开全部
A.x[4]不是地址,错
B.++y,y是数组名,是常量,不能++
C.strcpy(s=y+5,x);相当于s=y+5,strcpy(s,x);x长度为9,加上结束符,总长为10字节,但s指向的是y[5],之后只有y[6]到y[9]这4个字节可用,因此会造成数组访问越界.
D.strcpy(s=y+1,x+1);x+1即指向x[1]的指针,之后有8个字符和1个结束符,长度为9字节,y+1之后正好也有9个可用字节.正确.
s=y+1;y+1就是y[1]的地址.y+5就是y[5]的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式