利用指针计算2个矩阵的和
时间: 2024-05-11 09:18:26 浏览: 57
假设有两个矩阵A和B,它们都是n x m的矩阵,我们可以用以下代码来计算它们的和:
```c++
#include <iostream>
using namespace std;
void matrix_addition(int **A, int **B, int **C, int n, int m) {
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
*(*(C+i)+j) = *(*(A+i)+j) + *(*(B+i)+j);
}
}
}
int main() {
int n = 2, m = 3;
// 声明并初始化矩阵A
int **A = new int*[n];
for(int i = 0; i < n; i++) {
A[i] = new int[m];
for(int j = 0; j < m; j++) {
A[i][j] = i + j;
}
}
// 声明并初始化矩阵B
int **B = new int*[n];
for(int i = 0; i < n; i++) {
B[i] = new int[m];
for(int j = 0; j < m; j++) {
B[i][j] = i * j;
}
}
// 声明并初始化矩阵C
int **C = new int*[n];
for(int i = 0; i < n; i++) {
C[i] = new int[m];
for(int j = 0; j < m; j++) {
C[i][j] = 0;
}
}
// 计算矩阵A和B的和
matrix_addition(A, B, C, n, m);
// 输出结果
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
cout << C[i][j] << " ";
}
cout << endl;
}
// 释放内存
for(int i = 0; i < n; i++) {
delete [] A[i];
delete [] B[i];
delete [] C[i];
}
delete [] A;
delete [] B;
delete [] C;
return 0;
}
```
这里我们定义了一个名为`matrix_addition`的函数,它接受3个参数:指向矩阵A、B、C的指针以及矩阵的行数和列数。在函数中,我们使用两个for循环遍历矩阵A和B的每个元素,并将它们相加存储到矩阵C中。在函数中,我们使用了双重指针的方式来访问矩阵的元素,这样可以避免使用数组下标的方式,使代码更加简洁。在主函数中,我们声明了3个指向矩阵的指针A、B、C,并使用new运算符动态分配内存,然后初始化矩阵A和B的元素值。接着,我们调用`matrix_addition`函数来计算矩阵A和B的和,最后输出结果并释放内存。
阅读全文