二维数组用指针实现两个矩阵相加
时间: 2023-05-20 21:03:43 浏览: 99
可以使用以下代码实现:
```c
#include <stdio.h>
void addMatrix(int *a, int *b, int *c, int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
*(c + i * n + j) = *(a + i * n + j) + *(b + i * n + j);
}
}
}
int main() {
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int b[2][3] = {{7, 8, 9}, {10, 11, 12}};
int c[2][3];
addMatrix(&a[0][0], &b[0][0], &c[0][0], 2, 3);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", c[i][j]);
}
printf("\n");
}
return 0;
}
```
这个程序使用指针实现了两个二维数组的相加,其中 `addMatrix` 函数接受两个二维数组 `a` 和 `b`,以及一个空的二维数组 `c`,以及矩阵的行数和列数 `m` 和 `n`。函数中使用两个嵌套的循环遍历数组,将 `a` 和 `b` 中的对应元素相加,然后将结果存储到 `c` 中。在 `main` 函数中,我们定义了两个二维数组 `a` 和 `b`,以及一个空的二维数组 `c`,然后调用 `addMatrix` 函数将 `a` 和 `b` 相加,结果存储到 `c` 中,最后打印出 `c` 中的元素。