C语言字符串问题,求正确答案和解释 假设已定义char a[10]和char *p=a, 下面的赋

C语言字符串问题,求正确答案和解释
假设已定义char a[10]和char *p=a, 下面的赋值语句中,正确的是:
A) a[10]=”Turbo C”; B) a=”Turbo C”;
C) *p=”Turbo C”; D) p=”Turbo C”;

正确答案是D
A错误,因为a[10]代表一个字符是吧,不能赋值字符串
B错误是因为 数组名不能当左值,也就是数组名不能被赋值
C和A同样的错误,*p代表的是a[0]
D是正确的给指针赋值字符串是可以的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-13
正确答案是D追问

为啥

追答

A错,因为像A的这种赋值方法只能用在初始化中,比如char a[10]="Turbo C"就是正确的,如果不是初始化,而是先定义,再赋值就不能用这种方法。
B错,a是数组名,是char const * 型指针,不可以赋值。

C错,因为p是char型指针,所以*p是char型,而"Turbo C"是char *型,类型不匹配。

相似回答