c语言利用指针计算2个矩阵的和。
时间: 2024-06-09 13:05:25 浏览: 106
可以使用指针和双重循环来实现两个矩阵的相加。
下面是示例代码:
```c
#include <stdio.h>
#define ROW 3
#define COL 3
void addMatrix(int mat1[][COL], int mat2[][COL], int res[][COL]);
int main() {
int mat1[ROW][COL] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
int mat2[ROW][COL] = { {9, 8, 7}, {6, 5, 4}, {3, 2, 1} };
int res[ROW][COL];
addMatrix(mat1, mat2, res);
printf("Matrix 1: \n");
for(int i = 0; i < ROW; i++) {
for(int j = 0; j < COL; j++)
printf("%d ", mat1[i][j]);
printf("\n");
}
printf("\nMatrix 2: \n");
for(int i = 0; i < ROW; i++) {
for(int j = 0; j < COL; j++)
printf("%d ", mat2[i][j]);
printf("\n");
}
printf("\nResultant matrix: \n");
for(int i = 0; i < ROW; i++) {
for(int j = 0; j < COL; j++)
printf("%d ", res[i][j]);
printf("\n");
}
return 0;
}
void addMatrix(int mat1[][COL], int mat2[][COL], int res[][COL]) {
int i, j;
int *p1, *p2, *pr;
for(i = 0; i < ROW; i++) {
for(j = 0; j < COL; j++) {
p1 = *(mat1 + i) + j; // 获取 mat1[i][j] 的地址
p2 = *(mat2 + i) + j; // 获取 mat2[i][j] 的地址
pr = *(res + i) + j; // 获取 res[i][j] 的地址
*pr = *p1 + *p2; // 计算并存储结果
}
}
}
```
在上面的示例代码中,我们定义了 `addMatrix()` 函数来计算两个矩阵的和。函数使用三个指针 `p1`、`p2` 和 `pr` 分别指向两个矩阵的元素及结果矩阵的元素。然后,我们使用双重循环来遍历两个矩阵中的所有元素,并计算它们的和,并将结果存储在结果矩阵中。最后,我们在 `main()` 函数中调用 `addMatrix()` 函数,并打印出所有矩阵的值。
阅读全文