下列语句中存在语法错误的是a char ss[6][20];ss[1]="right?";b char ss[] [20]={"right?"};c char *ss[6];ss[1]="right?";d char ss[]={"right?"};为什么选A

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 03:28:45
下列语句中存在语法错误的是a char ss[6][20];ss[1]=

下列语句中存在语法错误的是a char ss[6][20];ss[1]="right?";b char ss[] [20]={"right?"};c char *ss[6];ss[1]="right?";d char ss[]={"right?"};为什么选A
下列语句中存在语法错误的是
a char ss[6][20];ss[1]="right?";
b char ss[] [20]={"right?"};
c char *ss[6];ss[1]="right?";
d char ss[]={"right?"};
为什么选A

下列语句中存在语法错误的是a char ss[6][20];ss[1]="right?";b char ss[] [20]={"right?"};c char *ss[6];ss[1]="right?";d char ss[]={"right?"};为什么选A
A:对于二位数组a[i][j],a[i]不是值,而是地址,就是第i行的首地址,即a[i][0]的地址(一个固定的地址);
ss[1]="right?";这句话,右边是个字符串常量,这么写意思是把"right?"(不包括双引号)这个字符串常量的首地址赋给等号左边,但等号左边的ss[1]本身就是一个固定的地址(ss[1][0]的地址).
也就变成了两个常量进行赋值,显然是错的;
C:就是一个数组ss[6],类型为char*,就是ss这个数组
ss[0]~ss[5]存的都是char*(可以理解为字符串)类型的东西,所以ss[1]="right?";就无疑是对的了