麻烦看下这道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?????如果是的话说下为什么???
谢谢~~~ 展开
A.char *sp;*sp="right!"; B.char s[10];s="right!"; C.char s[10];*s="right!"; D.char *sp="right!";
这道题选D?????如果是的话说下为什么???
谢谢~~~ 展开
展开全部
恩,是的,绝对是选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了。
哪里不懂可追问:
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了。
哪里不懂可追问:
展开全部
是选D
char *sp="right!"; 的意思是char *类型指针变量sp指向"right!", 即变量sp中保存着字符串"right!"的地址
其他三个选项,正确的字符串赋值的语句是strcpy(s或sp, "right!");
char *sp="right!"; 的意思是char *类型指针变量sp指向"right!", 即变量sp中保存着字符串"right!"的地址
其他三个选项,正确的字符串赋值的语句是strcpy(s或sp, "right!");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果把A改为 char *sp; sp="right!"; 则正确, 即把字符串中的第一个字符的地址赋值给sp
B,s是数组名,代表数组的首元素地址,是指针型常量,不能改变
c, *sp就是sp所指向的内容,是一个数组元素s[0]
D正确
B,s是数组名,代表数组的首元素地址,是指针型常量,不能改变
c, *sp就是sp所指向的内容,是一个数组元素s[0]
D正确
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询