
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。多维数组在实际的工作中使用不多,并且使用方法与二维数组相似。
组
再在对每个数进行初始化;
//动态定义和初始化二维数组 部分代码
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 ;
typedef vector<vector<int> > matrix;
这样matrix就是二维数组了,可以用push_back()动态往里面添加元素 ,不用预先定义数组大小
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;