`

动态数组的相关知识(转载)

 
阅读更多

对于简单的一维数组动态内存分配和释放,相信大家都是知道的,不过还是举个例子吧:

 int *array1D;
 //假定数组长度为m
 //动态分配空间
 array1D = new int [m];
 //释放
 delete [] array1D;

如果我们使用const来修饰数组的话,必须这样来定义:

        const int *a = new int[10](),必须加上(),意思是同时初始化为0,否则以后就没有机会初始化了。

 

但是,对于多维数组动态分配,大家可能不太熟悉。下面以常见的二维和三维数组为例来说明:

1. 二维数组的动态分配和释放

int **array2D;
  //假定数组第一维长度为m, 第二维长度为n
  //动态分配空间
  array2D = new int *[m];
  for( int i=0; i<m; i++ )
  {
      array2D[i] = new int [n]  ;
  }
  //释放
 for( int i=0; i<m; i++ )
 {
     delete [] arrar2D[i];
 }
 delete array2D;

 

P.S. 事实上二维数组空间的释放还可以更简单地用:delete [] array2D;

注意:二维数组不允许这样初始化  int **pp = new int[3][2];会发生编译错误。

 

2. 三维数组的动态分配和释放

 int ***array3D;
  //假定数组第一维为m, 第二维为n, 第三维为h
  //动态分配空间
  array3D = new int **[m];
 for( int i=0; i<m; i++ )
 {
      array3D[i] = new int *[n];
      for( int j=0; j<n; j++ )
      {
          array3D[i][j] = new int [h];
     }
 }
 //释放
 for( int i=0; i<m; i++ )
 {
     for( int j=0; j<n; j++ )
     {
          delete array3D[i][j];
     }
     delete array3D[i];
 }
 delete array3D;

 

分享到:
评论

相关推荐

    求数组的子数组之和的最大值,转载自:黑梦楠的日志

    总的来说,“求数组的子数组之和的最大值”是计算机科学中的一个重要问题,通过动态规划和Kadane's Algorithm等方法可以有效解决。它不仅在算法竞赛和面试中常见,而且对于理解和应用基础数据结构和算法有着深远的...

    Java版数据结构课件

    【Java版数据结构课件】...总的来说,这门Java版数据结构课件涵盖了数组的定义、存储方式以及特殊矩阵和广义表的处理,这些都是计算机科学基础课程中的核心内容,对于Java程序员来说,理解和掌握这些知识点是必备技能。

    二级c 语言试题不可转载

    "C_961.doc"可能包含了指针的使用,如指向变量、动态内存分配、指针运算和指针数组等题目,这部分内容往往对初学者来说较为挑战。 5. 文件操作 C语言提供了丰富的文件操作接口,"C_042.doc"可能测试了打开、读写、...

    【转载】javaScript常用的东东

    JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器端运行,为网页添加交互性,使得用户能够与页面进行动态沟通。这篇博文整理了55个JavaScript中的常用方法,涵盖了数组操作、对象处理、字符串处理、函数...

    南开100题(转载)

    【知识点详解】 1. **C语言编程基础**:在给定的代码中,可以看出这是用C语言编写的...以上就是从题目和代码中提取出的关键知识点,涵盖了C语言编程的基础,包括函数、数组、文件操作、条件判断、排序算法等多个方面。

    北京交通大学-数据结构925-13年-18年考研真题(转载).rar

    这份"北京交通大学-数据结构925-13年-18年考研真题(转载)"包含了2013年至2018年间的全部试题,并且附带了答案,对备考者来说是一份宝贵的参考资料。 数据结构的学习涵盖了数组、链表、栈、队列、树、图等多种抽象...

    C语言测试总结(转载)

    e) 动态分配的二维数组:`int (*a)[10] = malloc(sizeof(int[10][10]));` 4. **指针与数组** - 指针与数组之间的关系,如何通过指针访问和操作数组元素,如数组名在很多情况下等价于指向数组首元素的指针。 - ...

    vb编程100例(转载)

    VB编程100例(转载)是一份宝贵的资源,它包含了大量的Visual Basic(VB)编程实践案例,旨在帮助初学者和有一定基础的开发者巩固和提升VB编程技能。Visual Basic是微软公司开发的一种事件驱动编程语言,它以其直观的...

    转载 - 26本 Ruby/Rails 相关英文图书简评

    虽然没有具体的书籍列表,但我们可以根据常见的 Ruby 和 Rails 学习资源探讨相关知识点。 1. **Ruby 基础**:学习 Ruby 首先要掌握其基础语法,如变量、常量、数据类型(包括字符串、数组、哈希等)、控制结构...

    CSP-J 初赛模拟题附答案

    根据给定文件的信息,我们可以总结出以下几个相关的IT知识点: ### 1. 中国国家顶级域名 - **知识点**: 互联网域名系统(Domain Name System, DNS)中,顶级域名(Top Level Domain, TLD)用于区分不同国家和地区。...

    Java基础知识及面试题.pdf

    Java 基础知识及面试题 Java 是一门易于编程的跨平台编程语言,同时又是一个开发、应用、执行和部署的平台。Java 的主要特性包括平台无关、一次编译处处运行、易于编程。 1. 类和对象 在面向对象编程中,类是一种...

    《Java 程序设计》模拟试题(转载).docx

    Java是一种广泛使用的面向对象...这些知识点构成了Java程序设计的基础,包括编程语法、类和对象、数据类型、运算符、流程控制以及Java特有的特性,如Applet和字节码执行。理解和掌握这些内容对于学习Java编程至关重要。

    C语言课堂App【免费C语言学习交流】

    1、免费提供C语言学习及基础、条件结构、循环、数组、函数、指针等相关文字和视频教程,所有内容均属团队原创作品,版权所有,请勿转载; 2、支持【手机C语言编程】 3、将复杂的C语言基础和编程技能,通过生活化...

    C指针全面总结(转载)

    ### C指针全面总结 #### 一、指针的基本概念 指针是一种特殊的数据类型,其存储的是内存地址。为了全面理解指针,我们需要掌握以下几个关键概念...通过这些基础知识的学习,我们可以更深入地探索C语言中的高级特性。

    Keil编程环境下STM32内存管理研究[转载]

    STM32是ST公司基于ARM Cortex-M内核设计的微控制器,其性能强大、资源丰富,但是要高效使用STM32,必须掌握其内存管理的技巧,这包括程序代码存储、变量存储以及堆栈使用等方面的知识。 在Keil开发环境中进行STM32...

    c#语言版数据结构(转载)

    - **线性表**:包括链表、数组等数据结构的实现和操作方法。 - **栈和队列**:介绍这两种特殊的数据结构以及它们的应用场景。 - **串和数组**:讲解字符串处理和数组操作的技术细节。 - **树型结构**:涵盖二叉树、...

Global site tag (gtag.js) - Google Analytics