可以使用指针和动态内存分配来实现一个能够动态分配矩阵的函数。下面给出一个示例代码:
#include
using namespace std;
int ** allocate_matrix(int rows, int cols) {
int **matrix = new int*[rows]; // 动态分配指向行的指针
for (int i = 0; i < rows; i++) {
matrix[i] = new int[cols]; // 动态分配列,构成矩阵
}
return matrix;
}
int main() {
int rows = 2;
int cols = 3;
int **matrix = allocate_matrix(rows, cols); // 动态分配一个 2x3 的矩阵
// 对矩阵进行一些操作
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix[i][j] = i * cols + j;
cout << matrix[i][j] << " ";
}
cout << endl;
}
// 释放动态内存
for (int i = 0; i < rows; i++) {
delete[] matrix[i];
}
delete[] matrix;
return 0;
}
以上示例代码中,allocate_matrix
函数接受行数和列数作为参数,并使用 new
关键字动态分配内存来构建一个指针数组和一个二维数组,返回指向这个矩阵的指针。在 main
函数中,可以先调用 allocate_matrix
函数来动态分配矩阵,对矩阵进行一些操作,最后通过使用 delete
关键字释放动态内存。