题目1(单选,数组传参)
若使用一维数组名作函数实参,则以下正确的说法是
A. 必须在主调函数中说明此数组的大小
B. 实参数组类型与形参数组类型可以不匹配
C. 在被调用函数中,不需要考虑形参数组的大小
D. 实参数组名与形参数组名必须一致
答案:A
- A:数组的内存空间是在主调函数里分配的。定义静态数组,要么写死大小 int a[10] ,要么依靠初始化列表让编译器自动算出大小,主调这边必须确定数组尺寸。arr[]={…}它这里靠那个初始化标明大小
- B:实参与形参类型必须匹配。
- C:形参 int arr[] 本质是指针,编译器忽略括号里的数字;但是写代码逻辑上,遍历数组必须知道长度,否则会数组越界
- D:实参和形参名字相互独立,不需要一样。
题目2(单选,字符数组赋值)
以下选项中,不能正确赋值的是 ()
A. char s1[10];s1=“Ctest”;
B. char s2[]={‘C’,‘t’,‘e’,‘s’,‘t’};
C. char s3[20]=“Ctest”;
D. char s4[]=“Ctest\n”
答案:A
解析:
- A:数组一旦定义完成,数组名是地址常量,不能直接用 = 把字符串赋值给数组名。如果要复制字符串,要用 strcpy(s1,“Ctest”); 。
- B✅:字符数组逐个字符初始化,语法合法(只是没有 \0 ,不属于C语言字符串,只是字符数组)。
- C✅:定义数组的同时初始化,允许直接写字符串。
- D✅:定义时用字符串初始化,编译器自动计算数组长度,自动追加 \0 ,合法。
610



被折叠的 条评论
为什么被折叠?



