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;

C++中怎么用new函数定义一个二维数组?
方法一:使用常量 接上:如果将b指定为一个常量,例如new int[a][5],其实质与new int[a]创建一个动态数组并无多大区别——只是元素类型由int变为了'int[5]'而已。示例代码:void TestFunc_(unsigned int n){ unsigned int i,j;\/\/元素类型为‘int[5]’的数组,可赋值给‘int[5]’类型的...

如何在c++中定义一个可以自定义行数和列数的二维数组
动态二维数组一般用堆指针来实现,给你个例子,为测试方便用随机数填充并输出:include <iostream> include <cmath> include <cstdlib> include <ctime> using namespace std;int main(){ int r, c, i, j;cout << "输入矩阵的行数:";cin >> r;cout << "输入矩阵列数 : " ;cin >> c...

C++通过动态内存分配来来生成一个动态的二维数组,要求行列相乘为偶数...
char *argv[]){int m,n,i,j,**p,*q;srand((unsigned)time(NULL));m=rand()%10+1;while(m*(n=rand()%10+1)&1);\/\/保证m*n是偶数q=(int *)malloc(sizeof(int)*m*n);if(q==NULL || (p=(int **)malloc(sizeof(int *)*m))==NULL){printf("Application memory failure....

c++中怎样定义动态数组?
1、new 动态定义数组 2、因为new 就是用来动态开辟空间的,所以当然可以用来开辟一个数组空间。这样,下面的语句:int size=50; int *p=new int[size]; \/\/是正确的3、但是二维动态数组能不能也这样定义呢 int size=50,Column=50; int (*p)[Column]=new int [size][Column](1)首先 ne...

C++语言malloc创建二维数组问题
首先要理解 int* ptr = (int*)malloc(5 * sizeof(int)); \/\/ 动态分配5个整型的内存空间,跟int a[5]相似,但前者是堆上分配的,后者是栈上分配的 p=(int **)malloc(sizeof(int*)*5); \/\/ 意思就是定义一个有5个int类型的指针的动态数组,然后在里面存放指针 p[i] 其实就是一个...

C++怎样使用变量定义二维数组??
float **tt = new float*[a];for (int i=0; i

c++ 创建二维数组的几种方法
需要先申请一个M个元素的一维指针空间,然后对每个一维指针上,申请N个元素的对象空间。这样就可以申请一个M行N列的二维数组空间了。以整型为例 const int M = 10, N = 5;\/\/10行5列。int ** a;a = new int *[M];for(int i = 0; i < M; i ++) a[i] = new int[N];所...

C++如何定义一个两个下标数都是变量的二维数组?
用动态数组可以借用指针的办法先附上运行截图:附上程序:#include <iostream> using namespace std;int main(void){ int n, c = 0;cin >> n;int **p = new int * [n];for (int i = 0; i != n; ++i)p[i] = new int [n];for (int i = 0; i != n; ++i){ for (int...

c++ 用vector 定义二维数组
“二维”、“多维”数组在初级编程和解算法题时会被提到并流行 真正在实用中是较少用到的。实用中多用的是“装数组的数组”。vector<vector<int>> v;这个就是"二维",可以用v.size()直接得到行数 argv[] 这个也是"二维"。

c++中怎样实现二维数组的任意输入
采用堆分配,用new动态创建二维数组,维度m,n可以用scanf输入 \/\/分配 int **tmp = new int*[m]; for(int i = 0;i<m;i++) { tmp[i] = new int[n]; } \/\/释放 for(int i = 0;i<m;i++) { delete[] tmp[i]; } delete []tmp;...

相似回答