error C2664:不能将参数 1 从“int (*)[10][10]”转换为“int *”

2025-02-24 09:55:42
推荐回答(2个)
回答1:

#include 

#define N 3

typedef struct matrix {
int m[N][N];
}matrix;

matrix multiply(matrix A,matrix B,int n) {
int i,j,k;
matrix C;
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) {
C.m[i][j] = 0;
for(k = 0; k < n; k++) {
C.m[i][j] += A.m[i][k] * B.m[k][j];
}
}
}
return C;
}

void show(matrix a,int n) {
int i,j;
for(i = 0; i < n; ++i) {
for(j = 0; j < n; ++j)
printf("%4d",a.m[i][j]);
printf("\n");
}
}

int main() {
matrix A = {2,0,3,1,3,2,1,1,2};
matrix B = {0,1,2,0,1,3,2,1,1};
matrix C;
int n = 3;
printf("MATRIX A:\n");
show(A,3);
printf("MATRIX B:\n");
show(B,3);
C = multiply(A,B,n);
printf("MATRIX C:\n");
show(C,3);
return 0;
}

回答2:

应该是这样吧:multiply(A.m, B.m, C.m,n);