答案D
a。sp指向的内容未定义
b。s是引用数组首地址,一般做不了左表达式;即使左边是指针变量,右边那“right!"也不对应地址
c。*s是数组首元素
d。相当于两个操作,先申请地址存”right!“,再将sp指向它
A
char *sp;*sp="right!";
不对
sp是一个字符指针,然后再*sp就是一个字符的意思,它不可以赋值一个字符
串。
B
char s[10];s="right!";
s是一个数组名,数组名不可以赋值。
C
char s[10];*s="right!";
s是一个数组的首地址,它指向第一个元素。
所以*s就是s[0]它也是一个字符,不可以赋值为字符串。
其实赋值中,就是字符串赋值比较难。
你主要注意下
字符串的初始化的两种形式
char *sp="right!";
另外
char sp[]="right!";
也可以。
其他的如果不是初始化,纯赋值,主要是观察左右类型是否一致。
不能左边是一个字符或者一个指针,而右边是一个字符串常量。
B.D
D