问题 单项选择题

以下语句或语句组中,能正确进行字符串赋值的是______。

A.char *sp;*sp="right!";

B.char s[10];s="right!";

C.char s[10];*s="right!";

D.char sp="right!";

答案

参考答案:D

解析: 本题考查字符串常量的概念。字符串常量是一段用双引号引起来的字符序列,它可以出现在表达式中,也可以出现在对字符数组的初始化中。若出现在表达式中,可将其看做一个const char*类型的指针常量。若出现在字符数组的初始化中,系统自动在其结尾添加“\0”。选项A中,将字符串常量赋给未经初始化的字符指针sp,因为sp还未初始化,其指向的地址不确定,往一个不确定的地址中写数据容易使程序出错,所以选项A错误。选项B先定义了一个字符数组s,然后将字符串常量赋给s,而因为数组名s是一个指针常量,不可以被改变,所以选项B错误。选项C定义了一个字符数组,然后将一个字符串赋给数组的第一个元素,因为字符串在表达式中相当于一个常字符指针,而将一个指针赋给一个字符型变量是行不通的,所以选项C也错误。选项D定义一个字符指针,并同时将其初始化指向一个字符串常量,这是可行的。所以选项D正确。

单项选择题
单项选择题