已有如下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义为()

问题描述:

已有如下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义为()
int a[3][4];
f(a);
A f(int array[][6])
B f(int array[3][])
C f(int array[][4])
D f(int array[2][5])

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]);