zoukankan      html  css  js  c++  java
  • 动态定义多维数组

    1.普通数组的定义(维数)

    const unsigned int buf_size=512, max_files=20;
    
    int staff_size=27;
    
    const unsigned sz=get_size(); 
    
    
    char input_buffer[buf_size];//ok,是const变量
    
    string fileTable[max_files+1];//ok,是constant表达式(常量表达式)。
    
    double salaries[staff_size];//error,不是const变量。
    
    int test_scores[get_size()];//error,不是const表达式。
    
    int vals[sz];//error,直到运行阶段才能知道sz的值。

    数组的维数必须用值大于等于1的常量表达式定义。此常量表达式只能包含整形字面值常量、枚举常量或者用常量表达式初始化的整形const对象
    非const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数。

    2.动态定义一维数组

    利用new,生成动态数组,动态数组的维数可以是变量或常量。

    #include<iostream>
    #include<ctime>
    using namespace std ;
    int main()
    {
    int row;
    register int i;
    srand((unsigned)time(NULL)) ;
    cout<<"输入一维数组的行"<<endl;
    cin>>row ;
    //动态定义一维数组
    int *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 ; return 0; }


    3.动态生成多维数组

    //动态定义二维数组、三维数组
    #include<iostream>
    #include<ctime>
    using namespace std ;
    int main()
    {
    int hight , row , col ;
    register int i , j , k ;
    srand((unsigned)time(NULL)) ;
    
    cout<<"输入二维数组的行,列 :";
    cin>>row >>col ;
    //动态定义二维数组
    int **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 = 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 ;
    }

    动态定义二维数组:int **p2=new int* [row];生成一个长度为row的一维指针数组,数组中的每个元素都是int*类型,每个指针可以再指向一个一维int数组。

  • 相关阅读:
    html调用hadoop WebHDFS REST API
    推荐相关
    Resources of Studying Hadoop
    远程调试Hadoop(转)
    MYSQL复制的几种模式
    Hadoop实战第四章读书笔记
    FMS3系列(七):FMS案例开发视频聊天室
    Flex与.NET互操作系列文章
    使用FluorineFx Silverlight库实现Silverlight远程过程调用(RPC)
    修改 MySQL帐号密码,增加新用户
  • 原文地址:https://www.cnblogs.com/fly1988happy/p/2440472.html
Copyright © 2011-2022 走看看