c++中用new申请数组初始化的问题

一维、二维、三维的都麻烦说明一下(可以初始为哪些值?具体怎么做?),请给出代码及详解,谢谢!... 一维、二维、三维的都麻烦说明一下(可以初始为哪些值?具体怎么做?),请给出代码及详解,谢谢! 展开
 我来答
yunji777
2013-06-27 · 超过21用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:47.6万
展开全部
 //动态定义一维数组、二维数组、三维数组
#include<iostream>
#include<ctime>
using namespace std ;
int main()
{
int hight , row , col ;
register int i , j , k ;
srand((unsigned)time(NULL)) ;
 
cout<<"输入一维数组的行"<<endl;
cin>>row ;
//动态定义一维数组
int *p1 ; 
    p1 = new int [row] ;
//输入一维数组的值
for( i = 0 ; i < row ; i ++ ) 
   p1[i] = rand () % 10 ;
//输出一维数组
for( i = 0 ; i < row ; i ++ ) 
   cout<<p1[i] <<' ' ;
cout<<endl;
//释放一维数组
delete [] p1 ;
 
 
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 ;
 
 
cout<<"输入三维数组高,行,列 : ";
cin>>hight>>row >> col ;
//动态定义三维数组:
int *** p3 ;
p3 = new int**[hight ] ;
for( i = 0 ; i < hight ; i ++ ) 
     p3[i] = new int*[row] ;
for( i = 0 ; i < hight ; i ++ ) 
   for( j = 0 ; j < row ; j ++ ) 
    p3[i][j] = new int[col] ;
    //输入三维数组值:
   for(i = 0 ; i < hight ; i ++ )
    for(j = 0 ; j < row ; j ++ )
     for( k = 0 ; k < col ; k ++)
      p3[i][j][k] = rand()%10 ;
//输出三维数组:
     cout<<"输出三维数组"<<endl;
   for(i = 0 ; i < hight ; i ++ ) 
   {
    for( j = 0 ; j < row ; j ++ ) 
    {
     for( k = 0 ; k < col ; k ++ )
      cout<<p3[i][j][k]<<' ' ;
     cout<<endl;
    }
    cout<<endl;
   }
     //释放三维数组
   for( i = 0 ; i < hight ; i ++ )
    for( j = 0 ; j < row ; j ++ )
     delete []p3[i][j] ;
   for( i = 0 ; i < hight ; i ++ )
    delete []p3[i] ;
   delete []p3 ;
return 0 ;
}

追问
谢了,但是我想用     memset   这一类的东西来初始化(听说会快一些,而且代码短),能教一教吗?
追答
liuchengbodp
2013-06-27 · TA获得超过102个赞
知道小有建树答主
回答量:173
采纳率:75%
帮助的人:67.8万
展开全部
template <class T,int size>
class CArray
{
public :
T *Data;
T &operator [] (int pos){return Data[pos];}
CArray(){Data=new T[size]; }
~CArray() { delete [] Data; }
};
CArray< CArray< CArray<char,30> ,20> ,10> t; //理论上可以组成N维数组
//以上组合 高 10 宽 20 长度为30的字符串
memset (t[0][1].Data,0,30);
strcpy(t[0][1].Data,"1234566");
printf("%s\n",t[0][1].Data);
t[0][1][0]='$';
t[0][1][1]='@';
printf("%s\n",t[0][1].Data);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式