【发布时间】:2022-01-16 03:44:09
【问题描述】:
我有一个在函数中构造的数组。我想返回数组并将值存储在另一个数组中。不知何故,它不起作用。它没有显示任何类型的错误,但它不起作用。
int** matrixMultiplier(int A[2][2], int B[2][2], int dimension){
int p, q, r, s, t, u, v, i, j;
int C[2][2];
p = (A[0][0] + A[1][1]) * (B[0][0] + B[1][1]);
q = (A[1][0] + A[1][1]) * B[0][0];
r = A[0][0]*(B[0][1] - B[1][1]);
s = A[1][1]*(B[1][0] - B[0][0]);
t = (A[0][0] + A[0][1]) * B[1][1];
u = (A[1][0] - A[0][0]) * (B[0][0] + B[0][1]);
v = (A[0][1] - A[1][1]) * (B[1][0]+B[1][1]);
C[0][0] = p+s-t+v;
C[0][1] = r+t;
C[1][0] = q+s;
C[1][1] = p-q+r+u;
return C;
}
void main(){
int A[2][2] = {{2, 3},
{4, 5}};
int B[2][2] = {{4, 3},
{7, 8}};
int p, q, r, s, t, u, v, i, j;
int **C = matrixMultiplier(A, B, 2);
for(i = 0; i<2; i++){
for(j=0; j<2; j++){
printf("%d\t", C[i][j]);
}
printf("\n");
}
}```
【问题讨论】:
-
请参阅Function returning address of local variable error in C。相反,在调用者的代码中定义
int C[2][2],并将其添加为另一个函数参数,并将printf("%d\t", **C)更改为printf("%d\t", C[i][j])
标签: arrays c pointers multidimensional-array