• c++动态创建和销毁二维数组


    如果二维数组中的高维确定,则可以TYPE (*p)[N] = new TYPE [][N]; 用这种方法。 

    最常用的方法:

          使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组
                  
               int **b=new int*[row];       //分配一个指针数组,将其首地址保存在b中                                                     
               for(i=0;i<row;i++)             //为指针数组的每个元素分配一个数组
                   b[i]=new int[col];
               
            该方法定义的动态二维数组的释放需先释放指针数组的每个元素指向的数组,然后再释放该指针数组:
               for(i=0;i<row;i++)
               {
                     delete [col]b[i];
                     b[i]=NULL;
               }
               delete [row]b;
               b=NULL;

    简化的销毁方法:

    for(int i=0;i<=len1;i++)
        {
            delete[] d[i];
        }
    delete[] d;

    推荐使用上面的做法。销毁的过程,先销毁指针数组每个元素指向的数组,然后再销毁这个指针数组

    #include<iostream>
    using namespace std;
    
    void func(int m,int n)
    {
         
         int x;
          
        int **p=new int*[m];
        for(int i=0;i<m;i++)
            p[i]=new int[n];
    
        for(int i=0;i<m;i++)
            for(int j=0;j<n;j++)
            {
                //cin>>x;
    
                p[i][j]=rand();
                
            }
    
        for(int i=0;i<m;i++)
        {
    
            for(int j=0;j<n;j++)
            {
                cout<<p[i][j]<<ends;
            }
            cout<<endl;
        }
    
        for(int i=0;i<m;i++)
        {
            delete[n] p[i];
            p[i]=NULL;
        }
        delete [n]p; //经过测试p还不为NULL
        p=NULL;
         
    }
    
     
    
    int main()
    {
        func(5,5);
    
    }

    还可以用vecotor方便生成:

    #include   <iostream>   
    #include   <vector>   
    #include   <iomanip>   
      using   namespace   std;   
      int   main()   
      {   
        int   i,   
                j,   
                m,   //行数   
                n;   //列数   
        
        cout   <<   "input   value   for   m,n:";   
        cin>>m>>n;   
          
        //注意下面这一行:vector<int后两个">"之间要有空格!否则会被认为是重载">>"。   构造函数Conatiner c(n,t) n elem,eachvalue  is t
        vector<vector<int>   >   vecInt(m,   vector<int>(n));       
        for   (i   =   0;   i   <   m;   i++)   
          for   (j   =   0;   j   <   n;   j++)   
            vecInt[i][j]   =   i*j;     
              
        for   (i   =   0;   i   <   m;   i++)   
        {   
          for   (j   =   0;   j   <   n;   j++)   
            cout<<setw(5)<<vecInt[i][j]<<":"<<setw(9)<<&vecInt[i][j];   
          cout<<endl;   
        }   
        
        return   0;   
      }

    http://www.diybl.com/course/3_program/c++/cppsl/2008316/104783.html


                                            

  • 相关阅读:
    微信·小程序开发工具安装指南及注意事项
    测试
    PC上面的蓝牙的通信(C#)
    关于图片在div中居中问题
    JSONP---跨域请求问题
    关于position的用法
    APICloud自学笔记总结1
    前端html5
    关于图片自适应div大小问题
    亲身经历——大体量公司能为程序员的生涯带来什么帮助?
  • 原文地址:https://www.cnblogs.com/youxin/p/2502633.html
Copyright © 2020-2023  润新知