/*** 申请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);
}