C++怎么定义一个动态二维数组

如题所述

#include<stdlib.h>

#include<stdio.h>

#include<malloc.h>

#defineRANK10

#defineCOLUMN7

intmain()

{

inti,j;

int(*p)[COLUMN];

//动态生成二维数组,指定列数为COLUMN,如果想改,可以进行修改

//的参数,如果想定义n行2列就为:p=(int(*)[2])malloc(n*2*sizeof(int));

p=(int(*)[COLUMN])malloc(RANK*COLUMN*sizeof(int));//动态申请n行COLUMN列的二维数组

for(i=0;i<RANK;i++)

for(j=0;j<COLUMN;j++)

p[i][j]=i*j;

for(i=0;i<RANK;i++)

{

for(j=0;j<COLUMN;j++)

printf("%d,",p[i][j]);

printf("\n");

}

free(p);

system("pause");

return0;

}

扩展资料

定义一个三维数组:

intx[3][4][5];

定义了一个三维数组,数组的名字是x,数组的长度为3,每个数组的元素又是一个二维数组,这个二维数组的长度是4。

并且这个二维数组中的每个元素又是一个一维数组,这个一维数组的长度是5,元素类型是int。多维数组在实际的工作中使用不多,并且使用方法与二维数组相似。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-03

第2个回答  推荐于2017-10-13
用new申请空间;
再在对每个数进行初始化;
//动态定义和初始化二维数组 部分代码
cout<<"输入二维数组的行,列 :";
cin>>row >>col ;
int **p2 ;
p2 = new int*[row] ;
for( i = 0 ; i < row ; i ++ )
p2[i] = new int[col] ;
//输入二维数组的值
for( i = 0 ; i < row ; i ++ )
for( j = 0 ; j < col ; j ++ )
p2[i][j] = rand() % 10 ;
//输出二维数组
cout<<"输出二位数组:"<<endl;
for( i = 0 ; i < row ; i ++ )
{
for( j = 0 ;j < col ; j ++ )
cout<<p2[i][j]<<' ' ;
cout<<endl;
}
//释放二维数组
for( i = 0 ; i < row ; i ++ )
delete []p2[i] ;
delete []p2 ;
第3个回答  2011-12-10
#include <vector>
typedef vector<vector<int> > matrix;
这样matrix就是二维数组了,可以用push_back()动态往里面添加元素 ,不用预先定义数组大小
第4个回答  2011-12-10
int row, col;
cin >> row >> col;
int** ptr = new int* [row];
for(int i=0; i<row; i++)
{
ptr[i] = new int [col];
}
//使用之后一定要记得释放内存
for(int j=0; j<row; j++)
{
delete [] ptr[j];
}
delete [] ptr;