zoukankan      html  css  js  c++  java
  • C++二维数组的动态声明

    int **a  =  new int* [m]   //分配一个指针数组,将其首地址保存在a中   、

    for(int i = 0; i < m; i++)   //为指针数组的每个元素分配一个数组

           a[i] = new int [n];

    相当于产生了一个二维数组 a[m][n]了

    静态声明的数组可以有公式(假设也是m行n列)

                                              b[i][j] = b[i*n +j]

    这是因为数组b是连续的一片内存,而动态声明的数组任意的a[k]都是一个int*类型,即一个地址,所以只能a[i][j]或者*(*(a+i) + j)来访问数组的元素,而不能a[i*n + j]使用。

    动态声明的数组,使用后需要释放内存。

    for(int i = 0; i < m; ++i)

          delete []a[i];

    delete []a;

     1 #include <iostream>
     2 #include <stdlib.h>
     3 
     4 using namespace std;
     5 
     6 
     7 int main()
     8 {
     9     int row,column;
    10     cin >> row >> column;
    11     //申请空间
    12     int **a =  new int* [row];    
    13     for(int i = 0; i < row; i++)
    14         a[i] = new int[column];
    15 
    16     //使用空间
    17     for(int j = 0; j < row; j++)
    18         for(int k = 0; k < column; k++)
    19             a[j][k] = rand() % 100;
    20     
    21     for(int j = 0; j < row; j++)
    22     {
    23         cout << endl;
    24         for(int k = 0; k < column; k++)
    25             cout << a[j][k] << " ";
    26     }
    27     //释放空间
    28     for(int i = 0; i < row; i++)
    29         delete []a[i];
    30     a = NULL;
    31 
    32     return 0;
    33 }
     1  //方法二,利用vector创建二维数组
     2 #include <iostream>
     3 #include <stdlib.h>
     4 
     5 using namespace std;
     6 
     7 
     8 {  
     9     int row,column;  
    10     cin>>row>>column;  
    11   13     //申请空间  
    14     vector<vector<int> > a(row,vector<int>(column));  
    15       
    16   
    17     //使用空间  
    18     for(int j = 0;j < row;j++)  
    19         for(int k = 0;k< column;k++)  
    20             a[j][k] = rand()%100;  
    21   
    22     for(int j = 0;j < row;j++)  
    23     {  
    24         cout<<endl;  
    25         for(int k = 0;k< column;k++)  
    26         {  
    27             a[j][k] = rand()%100;  
    28             cout<<a[j][k]<<"     ";  
    29         }  
    30     }         
    31     return 0;       
    32 }  
  • 相关阅读:
    一个小案例精通lamda表达式
    你想被开除吗?来看看程序员【离职小技巧】吧
    让 Flutter 在鸿蒙系统上跑起来
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    环形单链表的增删改查、约瑟夫环两种解法
    一万字详解 Redis Cluster Gossip 协议
    Lambda表达式
    Linux系统中如何进入退出vim编辑器,方法及区别
    成为博客主的第一天
    【秋招内推】近期互联网公司秋招内推合集
  • 原文地址:https://www.cnblogs.com/boluo007/p/6755540.html
Copyright © 2011-2022 走看看