请高手过来帮我看看这个题目的正确答案!

问题描述:

请高手过来帮我看看这个题目的正确答案!
以下语句或语句组中,能正确进行字符串赋值的是
A)char *sp;*sp=“right!”;
B)char s[10];s=“right!”;
C)char s[10];*s=“right!”;
D)char *sp=“right!”

A是错误的,因为"right"是返回指向字符型的指针常量,*sp只能赋值给一个字符类型,所以A可以写成 char *sp;sp=“right!”;
B和C都是错误的,原因都在于:数组名是一个常指针,定义后给数组分配了内存,不能对数组名再赋值使之使之指向别的内存.但是可以定义是初始化:char s[10]=“right!”或char s[]=“right!”;
D是对的,定义指向字符型指针同时进行初始化.