C指针与输入的问题

以下正确的程序段是___Acharstr[20];scanf("%s",&str);Bchar*p;scanf("%s",p);Ccharstr[20];scanf("%... 以下正确的程序段是___
A char str[20];scanf("%s",&str); B char *p;scanf("%s",p);
C char str[20];scanf("%s",&str[2]); D char str[20],*p=str;scanf("%s",p[2]);
答案是给的选C,我看不懂。

高手可不可以加个好友?我QQ675313675,我在学C,共同进步。我在自己学习时进步很慢,遇到一些问题时也没有可以请教的人。大家有谁可以加我好友,共同进步。我在上大学,有时间学的,我也会学的很好,大家帮帮我吧。
展开
 我来答
匿名用户
2013-10-24
展开全部
答案A是正确的。%str,表示数组str的首地址,语句scanf的意思是从str的首地址开始。输入一个字符串,由于str[]是一个字符型数组,所以可以直接输入20个字符,分别存放在以str[0]开始到str[19]结束。
B是错的,p是一个指针变量,没有赋上具体的地址,你输入的字符该存到哪个地址是不确定的。所以是错的。
C也是错的,str是一个字符型数组,只能分别存放20个字符,而要输入一个字符串给str[2],这显然是不行的。
答案D和C是同样的道理。
匿名用户
2013-10-24
展开全部
scanf在读取输入的数据时需要使用目标变量的地址,可以通过&符号获取地址。

A——
str是个字符串,即字符数组,变量名就是字符串的地址,scanf使用&str错误,应该直接使用str,或者使用&str[0]

B——
scanf没有错,错的是指针p没有分配空间,此时,p指向null(0)

D——
同A,定义没有错,错的是scanf使用的内容。
定义的结果是指针p和字符串数组str完全相同(指向相同的位置),此时,p[2]指的是第三个字符,不是地址。正确的应该是&p[2](这里不考虑结果的正确,如果考虑结果,应该是&p[0])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-24
展开全部
c是正确的,你str[2]只是一个字符啊!不能赋值为字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式