麻烦看下这道c语言的题目。。

(39)以下语句或语句组中,能正确进行字符串赋值的是___D___。A.char*sp;*sp="right!";B.chars[10];s="right!";C.cha... (39)以下语句或语句组中,能正确进行字符串赋值的是___D___。
A.char *sp;*sp="right!"; B.char s[10];s="right!"; C.char s[10];*s="right!"; D.char *sp="right!";
这道题选D?????如果是的话说下为什么???
谢谢~~~
展开
 我来答
郁_诗
2011-03-21 · TA获得超过493个赞
知道小有建树答主
回答量:155
采纳率:100%
帮助的人:209万
展开全部
恩,是的,绝对是选d;
a中,sp是char型指针,那么*sp就是访问sp所指向的内容了,即已不再是指针。而"right!"这也是个指针,只不过是个字符串常量指针,当然就不能赋给不再是指针的*sp啦。
b中,s是个数组名,而数组名就是个常量指针,即它的值是不能改变的。所以不能用另一个常量指针"right!"来给它重新赋值;
c中,s是个常量指针,其指向数组的第0个元素即s[0],所以*s即为s[0],你觉得可以将"right!"赋给s[0]吗?
d中,sp是个刚定义的指针,然后就马上把"right!"这个常量指针值赋给了sp,所以选d了。

哪里不懂可追问:
jcw_2010
2011-03-21 · TA获得超过942个赞
知道小有建树答主
回答量:219
采纳率:100%
帮助的人:270万
展开全部
是选D
char *sp="right!"; 的意思是char *类型指针变量sp指向"right!", 即变量sp中保存着字符串"right!"的地址

其他三个选项,正确的字符串赋值的语句是strcpy(s或sp, "right!");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
8308zxy
2011-03-21 · 超过21用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:56.5万
展开全部
如果把A改为 char *sp; sp="right!"; 则正确, 即把字符串中的第一个字符的地址赋值给sp
B,s是数组名,代表数组的首元素地址,是指针型常量,不能改变
c, *sp就是sp所指向的内容,是一个数组元素s[0]
D正确
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式