Programming 版 (精华区)

发信人: Scorpion (但教心似金钿坚), 信区: Programming
标  题: [合集]请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2002年03月28日09:13:45 星期四), 站内信件

发信人: melancholy (飞翔,飞翔,永不下降), 信区: Programming
标  题: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月20日14:30:41 星期二), 站内信件

3x!
--
               
        
        
   

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.112.3.163]
发信人: lofe (〖点一盏心灯·给自己〗), 信区: Programming
标  题: Re: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月20日15:01:09 星期二), 站内信件

动态申请一块内存区域,充分利用指针的灵活,按照自己期望的方式
访问。

在C中,利用指针实现"二维数组"的访问;在C++中,也可以重载操作符 [] ,
定义自己的数组及其操作规则。

【 在 melancholy (飞翔,飞翔,永不下降) 的大作中提到: 】
: 3x!

--
                ═══════════════════﹃                     
                  过 而 结 要 情 有 结 而 过 要 情 有                        
                  程 不 果 的 , 些 果 不 程 的 , 些                        
                  。 是 , 是 重 事 ; 是 , 是 重 事                        
               ﹄═══════════════════                      
 生活是件激动人心的事。人生不如意十之八九,要懂得感激生活。    

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: DnC.hit.edu.cn]
发信人: ani (紫雾萦萦.晨曦点点), 信区: Programming
标  题: Re: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月20日15:05:17 星期二), 站内信件

写一段过来我看
因为我要用
可是你说的我不懂呀
呵呵
师兄^_^
【 在 lofe (〖点一盏心灯·给自己〗) 的大作中提到: 】
: 动态申请一块内存区域,充分利用指针的灵活,按照自己期望的方式
: 访问。
: 在C中,利用指针实现"二维数组"的访问;在C++中,也可以重载操作符 [] ,
: 定义自己的数组及其操作规则。
: 【 在 melancholy (飞翔,飞翔,永不下降) 的大作中提到: 】
: : 3x!

--

疯狂而执著地追求平淡而坦然地面对

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.112.3.163]
发信人: lofe (〖点一盏心灯·给自己〗), 信区: Programming
标  题: Re: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月20日15:22:23 星期二), 站内信件

int* pArray;
int  dim1,dim2;
int i,j;

#define pArray(i,j) ( *( (pArray)+(i)*(dim1)*sizeof(int)+(j) ) )

pArray = malloc(sizeof(int)*dim1*dim2);

if(pArray==NULL){
  ...
}

pArray(i,j) = ...         // *( pArray + i*dim1*sizeof(int)+j )

【 在 ani (紫雾萦萦.晨曦点点) 的大作中提到: 】
: 快给我解决问题
: 那不是我的马甲
: 我师兄的
: kick
: 不许灌水
: 解决问题
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 不小心暴露马夹了

--
                ═══════════════════﹃                     
                  过 而 结 要 情 有 结 而 过 要 情 有                        
                  程 不 果 的 , 些 果 不 程 的 , 些                        
                  。 是 , 是 重 事 ; 是 , 是 重 事                        
               ﹄═══════════════════                      
 生活是件激动人心的事。人生不如意十之八九,要懂得感激生活。    

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: DnC.hit.edu.cn]
※ 修改:·lofe 於 02月20日17:07:23 修改本文·[FROM: DnC.hit.edu.cn]
发信人: grub (BluePoint), 信区: Programming
标  题: Re: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月20日15:28:45 星期二), 站内信件

【 在 lofe (〖点一盏心灯·给自己〗) 的大作中提到: 】
: int* pArray;
: int  dim1,dim2;
: int i,j;
: #define pArray(i,j) ( *( (i)*(dim1)*sizeof(int)+(j) ) )
: pArray = malloc(sizeof(int)*dim1*dim2);
~~~~~~~~~~~~~~~~~~~~new int[dim1][dim2]
                      行不行,然后用完delete

: if(pArray==NULL){
:   ...
: }

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: as.hit.edu.cn]
发信人: ani (紫雾萦萦.晨曦点点), 信区: Programming
标  题: Re: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月20日15:46:01 星期二), 站内信件

数组长度不固定
不知道可不可以动态填加
只能删掉替换么?
第二维可以循环申请

这个想法简单一点
不知道对不对
【 在 Sun (大灯泡) 的大作中提到: 】
: 【 在 ani (紫雾萦萦.晨曦点点) 的大作中提到: 】
: : 快给我解决问题
: : 那不是我的马甲
: : 我师兄的
:     ^^^^不帮!
: : kick
: : 不许灌水
: : 解决问题

--

疯狂而执著地追求平淡而坦然地面对

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.112.3.163]
发信人: Sun (大灯泡), 信区: Programming
标  题: Re: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月20日15:50:06 星期二), 站内信件

用的是MFC吗?估计不是。MFC可以用CArray

自己做一个数组类,重载[],先预申请空间,适当的时候再重新申请,扩大或减少空间,
就动态了。
说起来很简单,实现起来也是有些工作要做的。
不行就到网上找代码吧,肯定能找到

【 在 ani (紫雾萦萦.晨曦点点) 的大作中提到: 】
: 数组长度不固定
: 不知道可不可以动态填加
: 只能删掉替换么?
: 第二维可以循环申请
: 这个想法简单一点
: 不知道对不对
: 【 在 Sun (大灯泡) 的大作中提到: 】

--
    如果程序员懂得了软件工程,
    那么他就不再是牛,
    更不是妓女了。

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
发信人: youkou (鬼灵精), 信区: Programming
标  题: Re: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月20日16:56:26 星期二), 站内信件

不可以
【 在 grub (BluePoint) 的大作中提到: 】
: 【 在 lofe (〖点一盏心灯·给自己〗) 的大作中提到: 】
: : int* pArray;
: : int  dim1,dim2;
: : int i,j;
: : #define pArray(i,j) ( *( (i)*(dim1)*sizeof(int)+(j) ) )
: : pArray = malloc(sizeof(int)*dim1*dim2);
: ~~~~~~~~~~~~~~~~~~~~new int[dim1][dim2]
:                       行不行,然后用完delete
: : if(pArray==NULL){

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.170.148]
发信人: grub (BluePoint), 信区: Programming
标  题: Re: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月20日17:39:27 星期二), 站内信件

为什么
【 在 youkou (鬼灵精) 的大作中提到: 】
: 不可以
: 【 在 grub (BluePoint) 的大作中提到: 】
: : ~~~~~~~~~~~~~~~~~~~~new int[dim1][dim2]
: :                       行不行,然后用完delete

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: as.hit.edu.cn]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月21日18:35:02 星期三), 站内信件

至少也得用delete[]
没有用到constructor、destructor
用new和delete的效率也未必比
malloc和free高

【 在 grub (BluePoint) 的大作中提到: 】
: 为什么
: 【 在 youkou (鬼灵精) 的大作中提到: 】
: : 不可以

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: ppp75.hr.hl.cn]
发信人: wane (plum), 信区: Programming
标  题: Re: 请问在C(C++)中怎样动态分配二维数组?
发信站: 哈工大紫丁香 (2001年02月25日16:35:11 星期天), 转信

建立:
double** yh;
yh=new double*[7];
for(int row=1;row<=6;row++)
 {
    yh[row]=new double[neq+1];
 }
删除:
for(int i=1;i<=6;i++)
{
    delete []yh[i];
}
delete []yh;

【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: 至少也得用delete[]
: 没有用到constructor、destructor
: 用new和delete的效率也未必比
: malloc和free高
: 【 在 grub (BluePoint) 的大作中提到: 】
: : 为什么

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.247.140]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.817毫秒