对于简单的一维数组动态内存分配和释放,相信大家都是知道的,不过还是举个例子吧:
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程序员来说,理解和掌握这些知识点是必备技能。
"C_961.doc"可能包含了指针的使用,如指向变量、动态内存分配、指针运算和指针数组等题目,这部分内容往往对初学者来说较为挑战。 5. 文件操作 C语言提供了丰富的文件操作接口,"C_042.doc"可能测试了打开、读写、...
JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器端运行,为网页添加交互性,使得用户能够与页面进行动态沟通。这篇博文整理了55个JavaScript中的常用方法,涵盖了数组操作、对象处理、字符串处理、函数...
【知识点详解】 1. **C语言编程基础**:在给定的代码中,可以看出这是用C语言编写的...以上就是从题目和代码中提取出的关键知识点,涵盖了C语言编程的基础,包括函数、数组、文件操作、条件判断、排序算法等多个方面。
这份"北京交通大学-数据结构925-13年-18年考研真题(转载)"包含了2013年至2018年间的全部试题,并且附带了答案,对备考者来说是一份宝贵的参考资料。 数据结构的学习涵盖了数组、链表、栈、队列、树、图等多种抽象...
e) 动态分配的二维数组:`int (*a)[10] = malloc(sizeof(int[10][10]));` 4. **指针与数组** - 指针与数组之间的关系,如何通过指针访问和操作数组元素,如数组名在很多情况下等价于指向数组首元素的指针。 - ...
VB编程100例(转载)是一份宝贵的资源,它包含了大量的Visual Basic(VB)编程实践案例,旨在帮助初学者和有一定基础的开发者巩固和提升VB编程技能。Visual Basic是微软公司开发的一种事件驱动编程语言,它以其直观的...
虽然没有具体的书籍列表,但我们可以根据常见的 Ruby 和 Rails 学习资源探讨相关知识点。 1. **Ruby 基础**:学习 Ruby 首先要掌握其基础语法,如变量、常量、数据类型(包括字符串、数组、哈希等)、控制结构...
根据给定文件的信息,我们可以总结出以下几个相关的IT知识点: ### 1. 中国国家顶级域名 - **知识点**: 互联网域名系统(Domain Name System, DNS)中,顶级域名(Top Level Domain, TLD)用于区分不同国家和地区。...
Java 基础知识及面试题 Java 是一门易于编程的跨平台编程语言,同时又是一个开发、应用、执行和部署的平台。Java 的主要特性包括平台无关、一次编译处处运行、易于编程。 1. 类和对象 在面向对象编程中,类是一种...
Java是一种广泛使用的面向对象...这些知识点构成了Java程序设计的基础,包括编程语法、类和对象、数据类型、运算符、流程控制以及Java特有的特性,如Applet和字节码执行。理解和掌握这些内容对于学习Java编程至关重要。
1、免费提供C语言学习及基础、条件结构、循环、数组、函数、指针等相关文字和视频教程,所有内容均属团队原创作品,版权所有,请勿转载; 2、支持【手机C语言编程】 3、将复杂的C语言基础和编程技能,通过生活化...
### C指针全面总结 #### 一、指针的基本概念 指针是一种特殊的数据类型,其存储的是内存地址。为了全面理解指针,我们需要掌握以下几个关键概念...通过这些基础知识的学习,我们可以更深入地探索C语言中的高级特性。
STM32是ST公司基于ARM Cortex-M内核设计的微控制器,其性能强大、资源丰富,但是要高效使用STM32,必须掌握其内存管理的技巧,这包括程序代码存储、变量存储以及堆栈使用等方面的知识。 在Keil开发环境中进行STM32...
- **线性表**:包括链表、数组等数据结构的实现和操作方法。 - **栈和队列**:介绍这两种特殊的数据结构以及它们的应用场景。 - **串和数组**:讲解字符串处理和数组操作的技术细节。 - **树型结构**:涵盖二叉树、...