发布网友 发布时间:2022-09-24 13:31
共3个回答
热心网友 时间:2023-09-13 08:40
C f(int array[][4])追问求解释!!!追答当二维数组作为参数传递给函数时,函数的形参不能简单地写双重指针,因为编译器实际寻址如下:对于数组 int p[m][n];如果要取p[i][j]的值,编译器是这样寻址的:p + i*n + j; 如果我们省略了第二维或者更高维的大小,编译器将不知道如何正确的寻址。因此如果我们在编写程序的时候需要用到各个维数都不固定的二维数组作为参数,虽然这个时候编译器还是不能识别,但我们可以把二维数组当做普通的指针,将它的大小用两个参数指明,然后我们为二维数组手工寻址,这样就可以将二维数组作为函数的参数传递了,我们可以把维数固定的参数变为维数随即的参数,如:
void Func(int array[3][10]);
void Func(int array[][10]);
热心网友 时间:2023-09-13 08:41
这题选C f(int array[][4])热心网友 时间:2023-09-13 08:41
选C追问求解释追答其实这题考的就是二维数组,几乎每本程序设计教程都有的。这里我用我看过的其中一本里面的解释来说明:仅当对二维数组赋初值时,可以缺省数组说明符中的行下标界,此时数组行数由表达式组成的个数决定。例如,类型声明语句“float a[][3]={{1,2},{3,4,5},{2},{-1,2,-3}};” 与语句“float a[4][3]={{1,2},{3,4,5},{2},{-1,2,-3}};” 的作用完全相同。注意,任何情况下,不可缺省二维数组说明符中的列下标界。