注册 登录
编程论坛 C++教室

关于建立动态数组的问题

黯然神伤 发布于 2009-07-25 19:40, 450 次点击
怎样建立动态的二维数组呢?我用过很多种写法,但好像都是编译不过去~~如果没有的话,大家帮我想想替代的方法也行~~~谢谢大家了~~
3 回复
#2
mfkblue2009-07-25 19:57
#include <iostream.h>
template <class T>
void Array(T **&x,int row,int clu) //申请新的二维数组
{
    int i;
    x=new T*[row];
    for(i=0;i<row;i++)
    x[i]=new T[clu];
   
}

template <class T>
void Del2dArray(T **&x,int row)        //释放二维数组
{
    int i;
    for(i=0;i<row;i++)
        delete []x[i];
    delete []x;
    x=0;
}

template <class T>
void change(T**&ne2,T **&old,int o,int nr,int nc) //动态改变数组size
{
    Array(ne2,nr,nc);
    int i;
    for(i=0;i<o;i++)
        ne2[i]=old[i];
    cout<<ne2[0][1]<<endl;            
   
}

void main()
{
    int **c;
    int i,j,o=1;
    Array(c,3,4);
    for(i=0;i<3;i++)
        for(j=0;j<4;j++)
            c[i][j]=o++;
    int **n;
    change(n,c,3,10,20);
    cout<<n[0][1]<<endl;               
    Del2dArray(n,10);
}
前两天写的,还有点问题,我也不知道为什么
#3
lintaoyn2009-07-25 20:05
int i,n,k;
int *p;
cin>>i;//行数
p=int * [i];//申请个指针数组
cin>>n;//列数
k=0
while(k<i)
{
 p[k]=n;
 ++k;
}
#4
lintaoyn2009-07-25 20:11
int i,n,k;
int **p;//修改
cin>>i;//行数
p=new int * [i];//申请个指针数组(修改)
cin>>n;//列数
k=0
while(k<i)
{
p[k]=new int[n];//修改
++k;
}
1