利用指针计算两个矩阵的和
时间: 2024-05-05 12:20:41 浏览: 59
数据结构学习--图的邻接矩阵和邻接表存储
假设有两个矩阵A和B,它们的行数和列数分别为m和n。利用指针计算这两个矩阵的和可以按照以下步骤进行:
1. 动态分配内存,创建一个m行n列的矩阵C,用于存储A和B的和。
```
int **C = (int **)malloc(m * sizeof(int *));
for (int i = 0; i < m; i++) {
C[i] = (int *)malloc(n * sizeof(int));
}
```
2. 利用指针遍历A和B的每一个元素,并将它们相加,然后将结果存储到C中。
```
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
*(C[i] + j) = *(A[i] + j) + *(B[i] + j);
}
}
```
3. 打印矩阵C中的每一个元素,以验证计算结果是否正确。
```
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", *(C[i] + j));
}
printf("\n");
}
```
完整的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
int m = 3, n = 3;
int **A = (int **)malloc(m * sizeof(int *));
int **B = (int **)malloc(m * sizeof(int *));
int **C = (int **)malloc(m * sizeof(int *));
for (int 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));
for (int j = 0; j < n; j++) {
A[i][j] = i + j;
B[i][j] = i - j;
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
*(C[i] + j) = *(A[i] + j) + *(B[i] + j);
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", *(C[i] + j));
}
printf("\n");
}
return 0;
}
```
阅读全文