一道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;这个赋值表达式的值是多少?
展开
2个回答
展开全部
什么叫从左到右呢。
您看看。(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呀。所以没什么影响。
您看看。(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呀。所以没什么影响。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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]的地址
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]的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询