zoukankan      html  css  js  c++  java
  • C++ 指针二维数组, C++二维指针数组笔记

    C++ 二维动态数组

    一、 已知第一维

    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char const *argv []){
      int M = 5;
      int n = 5;
    
      // 声明数组行指针
      char * a[M];
    
      for (int i = 0; i < M; i++) {
        // 声明数组列指针
        a[i] = new char[n];
        // 列赋值
        for (int j = 0; j < n; j ++){
          a[i][j] = j;
        }
      }
      // 打印值
      for (int i = 0; i < M; i++){
        for (int j = 0; j < n; j++){
          printf("%d  ", a[i][j]);
        }
        printf("
    ");
      }
    
      // 打印行指针
      printf("a[0]   : %p
    ", a[0]);
      printf("a[0]   : %p
    ", *(a+0));
      // 打印具体位置指针
      printf("a[0][0]: %p
    ", *(a+0)+0);
      printf("a[0][3]: %p
    ", *(a+0)+3);
      // 值的打印方法
      printf("a[1][2]: %d
    ", *(*(a+1)+2));
      printf("a[1][2]: %d
    ", a[1][2]);
    
    
      // delete 内存
      for (int i = 0; i < M; i++){
        delete [] a[i];
      }
    
      return 0;
    }
    View Code

     

    二、两维都不知道

    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char const *argv []){
    
      int rowsNum = 5;
      int columnsNum = 5;
    
      // 两维都不知道
      char **a;
      a = new char * [rowsNum];
    
      for (int i = 0; i < rowsNum; i++) {
        a[i] = new char [columnsNum];
        for (int j = 0; j < columnsNum; j++) {
            a[i][j] = j;
            printf("%d ", a[i][j]);
        }
        printf("
    ");
      }
    
      printf("%d
    ", sizeof(a));
    
      for (int i = 0; i < rowsNum; i++) {
        delete [] a[i];
      }
      delete [] a;
    
    
      return 0;
    }
    View Code

     

     三、已知第二维

     

     四、 已知第一维, 一次分配内存(保证内存连续性)

     五、 两维都未知, 一次分配内存(保证内存的连续性)

        多说一句:new和delete要注意配对使用,即有多少个new就有多少个delete,这样才可以避免内存泄漏!
  • 相关阅读:
    最大子数组问题
    剑指offer python版 树的子结构
    剑指offer python版 重建二叉树
    剑指offer python版 字符串变成整数
    剑指offer python版 构建乘积数组
    剑指offer python版 不用加减乘除做加法
    剑指offer python版 求1+2+…+n
    剑指offer python版 股票最大收益
    剑指offer python版 圆圈中最后剩下的数字
    剑指offer python版 扑克牌的顺子
  • 原文地址:https://www.cnblogs.com/renfanzi/p/9144734.html
Copyright © 2011-2022 走看看