首页 > 试题广场 >

定义数组int A[6][9],若将其作为参数传入方法中,则

[不定项选择题]
定义数组int A[6][9],若将其作为参数传入方法中,则对应的形参可以定义为()
  • int(*s)[9]
  • int *s[9]
  • int D[6][]
  • int D[][9]
选AD
编译器会忽略数组第一维的长度,所以参数数组中第一维的长度可以省略,第二维不可以。

发表于 2019-09-06 15:43:11 回复(1)
A:int(*s)[9] :二维数组指针,指针s(第一维),指针s指向的数组(第二维)
B:int *s[9]  :指针数组,一个数组里面存放的元素是指针
发表于 2019-10-11 11:44:49 回复(0)
A. int(*s)[9] 是表示 指向 大小为9的 数组指针。所以对。
发表于 2020-05-23 17:24:24 回复(0)
① int arr1[6][9] = { 0 };
② int (*arr2)[9] = new int[6][9]();
看懂掌声
arr1看似指向二维数组,实际上指向类型是一数组,①式是表象,②式才是本质!

如果不懂还可以降纬理解一下
int arr1[9]={0};
int *arr2=new int[9]();
如果arr1+1,你会认为它偏移9个int吗?当然每次只移一个int了,因为它虽然指向一维数组,但是指向类型是int啊。
arr2同理,我们始终要注意的是指针的类型,而不是分配空间的大小,别让它迷惑你。
编辑于 2021-06-24 17:28:46 回复(1)
[]与紧挨着他的符号结合 p[]说明是一个数组元素都是p的数组,*p[]说明是一个指向数组的指针,所以是一维数组指针。 (*p)[]说明是一个数组元素都是*p的数组,即数组每个元素都是一个指针,指向一个数组,所以是二维数组。
发表于 2020-10-13 10:54:24 回复(0)
1. 是一个二维数组指针,指向大小为9的数组 2. 是一个指针数组,s中的成员都是指向int型的指针 3. 二维数据可以忽略行数,但是不能忽略列数
编辑于 2021-02-20 22:29:51 回复(0)
答案:
B. int *s[9]

解释:
- 定义数组int A[6][9]表示A是一个二维数组,有6行9列。
- 形参可以定义为指向一维数组的指针,即int(*s)[9]。这是因为在传递二维数组时,实际上传递的是指向数组第一行的指针,而每一行是一个长度为9的一维数组。
- int *s[9]表示一个包含9个指针元素的数组,每个指针元素指向一个int类型的变量。这与二维数组不匹配,因此不是正确的形参定义。
- int D[6][]是不合法的形参定义,因为在定义数组时,必须指定每一维的大小。
- int D[][9]表示一个未知行数,每行有9列的二维数组。这也是合法的形参定义。
发表于 2023-06-24 16:45:08 回复(0)
A D钙奶
发表于 2019-09-06 14:18:00 回复(0)
求大佬解析
发表于 2019-09-06 11:39:47 回复(0)
二维数组传参必须保证,列的数量确定,他代表着跳跃的元素个数,arr+1,跳跃一行
int arr[5][6]    作为形参参数时,列的数量不能省略,int arr[ ][6],
int (*s)[9]      作为行参参数, 变化为   int   * ((*s)+9)    省略行数,
数组中括号变化,括号内 在加号右边,括号外的在加号左边。     a[9] = (*a+9)
发表于 2023-10-20 19:57:12 回复(0)