您的位置:首页 > 编程语言 > C语言/C++

C++动态申请二维数组

2015-04-09 12:19 309 查看
/*** 申请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
;
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ malloc