
已知定义char **s;,下列语句正确的是( )。 A. s="computer" B. *s="computer" C. **s="computer" D. *s='A'
在C语言中,char **s 定义了一个指向指针的指针。也就是说,s 是一个指向 char * 类型的指针。因此,选项的含义需要理解指针的操作。
逐一分析各个选项:
A. s = "computer";
错误:s 是 char ** 类型,表示一个指向指针的指针,但 "computer" 是一个指向 char 的常量字符串。你不能直接将一个字符串赋给 char ** 类型的指针。
B. *s = "computer";
正确:这里,*s 是一个 char * 类型的指针,因此可以将 "computer" 赋值给 *s,也就是让 *s 指向字符串 "computer"。这个语句是合法的。
C. **s = "computer";
错误:**s 是一个 char 类型的值,而 "computer" 是一个字符串常量(指向字符数组的指针)。你不能将一个指向字符串的指针直接赋给一个字符类型的变量。
D. *s = 'A';
正确:*s 是一个 char * 类型的指针,因此可以将 *s 指向的第一个字符赋值为 'A'。这种操作是合法的。
综上,正确答案是 B 和 D。