一道C语言选择题:以下正确的程序段是:()

一道C语言选择题:以下正确的程序段是:(),第1张

A. char str[20]scanf("%s",&str)

B. char *pscanf("%s",p)

C. char str[20]scanf("%s",&str[2])

D. char str[20],*p=strscanf("%s",p[2])

A:str是数组的名字,它单独出现时候代表的是该数组的首地址

&用在变量前代表取其地址,对str这个地址取地址,不是程序想要的吧!

B:p做为一个指针,没有初始化.记住,指针一定要初始化后才能使用!

C:str[2]的意思其实是 *(str + 2),

所以&str[2]其实就是&*(str + 2),也就是str + 2,还是个地址,所以是正确的.

D. char str[20],*p=strscanf("%s",p[2])

:p[2]代表 *(p+2),代表第三个字符了

A对 字符数组赋值可以不用&,用了也是对的

B错 只有一个指针,但是这个指针并未指向可用的空间。

C错 虽然程序运行没问题,但是这样做是从s[2]开始写入.s[0]和s[1]是随机值.

前面0~1元素的数据不确定会导致后面不能完整用str索引 ,获取不到正确值

D错 str是什么,如果前面初始化为char str[20],也是错的,因为p[2]是一个字符,不是地址

所以A对,C的话 可以运行,但是获取的值不对,看你怎么认为该选项对不对了

望采纳

D是正确的

A,B中 p是n的地址 那么如果要输入n 应该是scanf("%d", p)

C中 p还没定义 给*p赋值就是给一个没有开辟的地址赋值了

D是正确的 意思是p为n的地址,将p地址上的数变成m, 等价于n=m


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11133019.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存