我们在使用二维数组作为参数时,我们可以指明这个数组所有的维数,同时我们也可以省略一维,但是二维或者高维却不能省略。why呢?由于编译器原理的限制,在一个数组Elemtype test[m][n]中,访问test[i][j]时(也就是寻找绝对地址了),`loc(i,j)=loc(0,0)+i * n * sizeof(Elemtype)+j * sizeof(Elemtype)` **注**:Elemtype是存储的元素类型,这样我们就看到二维长度起到了作用。
在定义二维数组的时候对其进行初始化,也可以省略第一维,编译器会根据你的初始化语句自动决定第一维度。
这里给出以二维数组为参数,矩阵的乘法的例子。
/**
A:待乘矩阵
B:待乘矩阵
C:结果矩阵
m:左矩阵行
n:左矩阵列也是右矩阵行
k:右矩阵列
**/
void mul(int C[][Maxsize],int A[][Maxsize],int B[][Maxsize],int m.int n,int k){
for(int i=0;i<m;i++){
for(int j=0;j<k;j++){
C[i][j] = 0;
for(int h=0;h<n;h++){
C[i][j]+=A[i][h]*B[h,i];
}
}
}
}