利用指针计算 2 个矩阵的和
时间: 2024-05-13 12:14:18 浏览: 12
假设有两个矩阵A和B,它们的维度都为m行n列。下面是使用指针计算矩阵和的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int m, n, i, j;
int **A, **B, **C;
// 输入矩阵维度
printf("请输入矩阵维度(m n): ");
scanf("%d %d", &m, &n);
// 动态分配矩阵空间
A = (int **)malloc(m * sizeof(int *));
B = (int **)malloc(m * sizeof(int *));
C = (int **)malloc(m * sizeof(int *));
for (i = 0; i < m; i++) {
A[i] = (int *)malloc(n * sizeof(int));
B[i] = (int *)malloc(n * sizeof(int));
C[i] = (int *)malloc(n * sizeof(int));
}
// 输入矩阵A
printf("请输入矩阵A:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &A[i][j]);
}
}
// 输入矩阵B
printf("请输入矩阵B:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &B[i][j]);
}
}
// 计算矩阵和
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
C[i][j] = A[i][j] + B[i][j];
}
}
// 输出结果
printf("A + B =\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%d ", C[i][j]);
}
printf("\n");
}
// 释放矩阵空间
for (i = 0; i < m; i++) {
free(A[i]);
free(B[i]);
free(C[i]);
}
free(A);
free(B);
free(C);
return 0;
}
```
在上面的代码中,我们首先使用 `malloc()` 动态分配了3个二维数组 `A`、`B` 和 `C` 的空间,然后分别输入了矩阵A和矩阵B,最后使用2个嵌套的循环计算矩阵和并输出结果。最后,我们使用 `free()` 函数释放了矩阵空间,避免内存泄漏问题。