C++中二维数组总结

最近编程需要研究了一下二维数组,网上这方面的资料蛮多了,汇总一下,欢迎补充!

关于二维数据的基本知识见这里:

C++二维数组讲解、二维数组的声明和初始化

关于二维数据的动态分配,以下博客讲述得比较清楚:

1、C++中二维数组new小结

2、二维数组的动态分配(new)、初始化(memset)和撤销(delete)

3、动态分配内存。。。

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

举例:

//动态定义一维数组、二维数组、三维数组
#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 ;
}

结果如下:



  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值