一道VC++选择题,请详细解释每个选项
下列数组的定义和赋值,正确的是 。
A. char s[3]={“abc”};
B. char s[10];s=“abc”;
C. int i=10;char s[i]=“abc”;
D. const int i=10;char s[i];strcpy(s,“abc”);
请详细解释每个选项
答案:A. char s[3]={“abc”}; 数组下标越界
B. char s[10];s=“abc”; 数据不能直接赋值
C. int i=10;char s[i]=“abc”; 数据定义长度不能是变量
D. const int i=10;char s[i];strcpy(s,“abc”);正常i为常量,用strcpy赋值,此项正确
其他:应该选B。
A,不能直接把字符串赋给数组,应该这样{”a“,”b“,"c"}。
C,定义数组时,数组的维数不能使用变量;
D,错误同上。 B也错的char 不能直接赋值 A,不能直接把字符串赋给数组,应该这样{”a“,”b“,"c"}。
B,数组名表示地址,不能这样赋值
C 定义数组时,数组的维数不能使用变量
答案选D A选项是因为数组的长度,abc后面还会自动加上‘\0’,所以少了一个字符。
B是正确的;
C选项是因为编译器在编译的时候i的值还不能够使用,编译器会认为i不是一个数字。
D和C基本同理
个人理解,不知道是否正确。
答案肯定是B毫无疑问,一楼的A选项说的不对,字符数组是可以直接赋字符串的,数组的名字就指向这个字符串存储空间的首地址因为是连续的,所以可以直接复制字符串。
上一个:VC中怎么定位MessageBox出现的位置
下一个:关于VC中的for的疑问,究极菜鸟求高手赐教