C++动态申请二维数组

来源:互联网 发布:搭建高并发java框架 编辑:程序博客网 时间:2024/06/05 11:43
/*** 申请1维双精度实数数组 ***/double *alloc_1d_dbl(int n){double *new1;new1 = (double *) malloc ((unsigned) (n * sizeof (double)));if (new1 == NULL) {printf("ALLOC_1D_DBL: Couldn't allocate array of doubles\n");return (NULL);}return (new1);}/*** 申请2维双精度实数数组 ***/double **alloc_2d_dbl(int m, int n){int i;double **new1;new1 = (double **) malloc ((unsigned) (m * sizeof (double *)));if (new1 == NULL) {//printf("ALLOC_2D_DBL: Couldn't allocate array of dbl ptrs\n");return (NULL);}for (i = 0; i < m; i++) {new1[i] = alloc_1d_dbl(n);}return (new1);}
void printMatrix(int **matrix,int row,int col){for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){cout << matrix[i][j] << " ";}cout << endl;free(matrix[i]);}free(matrix);}

 

第二种使用new的方法申请二维数组:

#include <iostream>using namespace std;double* alloc_1d(int n){double *new1;new1 = new double[n];return new1;}double** alloc_2d(int m, int n){double** new1;new1 = new double*[m];for (int i = 0; i < m; i++){new1[i] = alloc_1d(n);}return new1;}void input(double **matrix, int m, int n){for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){cin >> matrix[i][j];}}}void printMatrix(double **matrix, int row, int col){for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){cout << matrix[i][j] << " ";}cout << endl;delete[]matrix[i];}delete[]matrix;}void main(){int row, col;double **matrix;cout << "输入row col:" << endl;cin >> row >> col;matrix = alloc_2d(row, col);input(matrix, row, col);printMatrix(matrix, row, col);}


0 0
原创粉丝点击