如何在C/C++中动态分配二维数组

 我来答
金色潜鸟
推荐于2016-02-13 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5700万
展开全部
方法1:

int NC=5, NR=3; // 假定5列3行

int i,j;

int **a; // a[NR][NC] -- *a[NR] -- a[j][i]

a = (int **) malloc(sizeof(int *) * NR);

for (j=0;j<NR;j++){
a[j] = (int *) malloc(sizeof(int) * NC);
}
=======
c++ 用 new 法:
int **p=new int*[M];
for(int i=0;i<M;i++) *p=new int[N];
=======
用自定义函数
int ** creatmatrix(int row, int col){
int i;
int **matrix;
matrix = (int **)malloc(row*sizeof(int *));
matrix[0] = (int *)malloc(row*col*sizeof(int));
for(i=1; i<row; i++) {
matrix[i] = matrix[i-1] + col; }
return matrix;
}
通过调用:
int **a, **b;
a = creatmatrix(3, 4); // 3行4列
b = creatmatrix(5,3); // 5行3列
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郭乐530
2016-03-25 · TA获得超过369个赞
知道小有建树答主
回答量:617
采纳率:68%
帮助的人:272万
展开全部
int NC=5, NR=3; // 假定5列3行

int i,j;

int **a; // a[NR][NC] -- *a[NR] -- a[j][i]

a = (int **) malloc(sizeof(int *) * NR);

for (j=0;j<NR;j++){
a[j] = (int *) malloc(sizeof(int) * NC);
}
=======
c++ 用 new 法:
int **p=new int*[M];
for(int i=0;i<M;i++) *p=new int[N];
=======
用自定义函数
int ** creatmatrix(int row, int col){
int i;
int **matrix;
matrix = (int **)malloc(row*sizeof(int *));
matrix[0] = (int *)malloc(row*col*sizeof(int));
for(i=1; i<row; i++) {
matrix[i] = matrix[i-1] + col; }
return matrix;
}
通过调用:
int **a, **b;
a = creatmatrix(3, 4); // 3行4列
b = creatmatrix(5,3); // 5行3列
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式