C++中二维数组总结

来源:互联网 发布:javascript 光标 编辑:程序博客网 时间:2024/06/16 18:15

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

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

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 ;}

结果如下:



0 0