标题:怎样动态申请n维数组?
只看楼主
wangweicoin
Rank: 1
等 级:新手上路
威 望:1
帖 子:58
专家分:0
注 册:2007-7-16
 问题点数:0 回复次数:6 
怎样动态申请n维数组?

请问怎么动态申请2维数组,n维呢? 我查过书,看不太懂,是不是只有一组下标才能用变量表达式?


float (*cp)[25][10];
cp=new float[10][25][10];

这样申请是什么意思呢?
搜索更多相关主题的帖子: 动态 申请 变量 float 
2007-09-08 14:54
wlmau
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-5-24
得分:0 
第一个语句意思比较明显,如果指针不加括号则是申请了[25][10]个指针了,加了则表示申请了一个指针指向二维数组;第二条语句是说申请了10个二维数组空间,cp指向第一个的下标.
我是这么理解的

2007-09-08 15:49
wangweicoin
Rank: 1
等 级:新手上路
威 望:1
帖 子:58
专家分:0
注 册:2007-7-16
得分:0 

回2楼:
对,应该是这个意思,谢谢。但是好像如果要使用变量表达式最多也就是改成 cp=new float[N][25][10]; 依然像是不能用变量表达式指定2维数组的大小。 因为是动态的嘛,我想把2维数组中的下标表达式都用变量表达式表示,可以吗?


~我的人生不是套公式~
2007-09-08 16:05
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
得分:0 
回复:(wangweicoin)怎样动态申请n维数组?

/**
d1 can be a variable, d2---dn have to be constants.
The reason is that the complier needs to know how much
memory should be allocated.
*/
int d1;
const int d2=5;
...
const int dn=5;

float (*cp)[d2]...[dn];

d1=3;
cp = new float[d1][d2]...[dn];

delete [] cp;

d1=7;
cp = new float[d1][d2]...[dn];

delete [] cp;


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-09-08 17:20
wangweicoin
Rank: 1
等 级:新手上路
威 望:1
帖 子:58
专家分:0
注 册:2007-7-16
得分:0 
哦,原来是这样啊,谢谢!那这样动态申请多维数组有什么好处呢?感觉就是申请了d1个n-1维空间,要是我想要用户自己输入2维数组空间的大小,就像是动态申请一个普通数组那样,能不能做到呢?

~我的人生不是套公式~
2007-09-08 19:07
hegj
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-9-5
得分:0 

我也是新手,看书有这么一个;

typedef int* IntArrayPtr;

int d1,d2;
cout<<"Enter the row and column dimensions of the array:\n";
cin>>d1>>d2;
IntArrayPtr *m=new IntArrayPtr[d1];
int i,j;
for(i=0;i<d1;i++)
m[i]=new int[d2];
//m现在就变成了的d1行d2列的二维数组。


2007-09-08 22:00
wangweicoin
Rank: 1
等 级:新手上路
威 望:1
帖 子:58
专家分:0
注 册:2007-7-16
得分:0 
还真是啊,有意思! 谢谢!

~我的人生不是套公式~
2007-09-08 22:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-168587-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.372324 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved