• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++ 在堆上开辟与释放二维、三维指针详细解析

C++ 在堆上开辟与释放二维、三维指针详细解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++堆排序,c++堆,c++三维数组,c++指针,c++指针详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

学习C++新手通常会对指针的使用比较头疼,其实指针的概念很简单,只要能悟清楚这样一个简单的道理就能对指针有一定的认识了: 例如 int *a = new int[10]; 一维指针其实就相当于一维数组,不用去看书上所说的数组在内存中的首地址这些晦涩的话,以此类推 二维指针就相当于二维数组,新手对一维数组的开辟与释放比较容易熟悉,例如上面的a 释放就是 delete []a; a = NULL; 注意a = NULL; 必须要加上,这样是为了避免这个指针会变成“野指针”。写程序时一定要注意规范性和严谨性,避免可能会出现的错误。

//这样就在堆上开辟了int类型的二维指针,大小为10*50,相当于在堆上一个二栈数组int b[10][50];
for(int i = 0; i != 10; ++i)
{
     delete []b[i];
     b[i] = NULL;
}
delete []b;
b = NULL;

//三维指针的开辟与释放
int ***a = NULL;
a = new int**[10];
for(int i = 0; i != 10; ++i)
{
    a[i] = new int*[50];
    for(int j = 0; j != 50; ++j)
    {
        a[i][j] = new int[30];
        memset(a[i][j], 0, sizeof(int)*30);
    }
}

//这样就在堆上开辟了int类型的三维指针,大小为10*50*30,相当于在栈上一个二维数组int a[10][50][30];
for(int i = 0; i != 10; ++i)
{
    for(int j = 0; j != 50; ++j)
    {
       delete []a[i][j];
       a[i][j] = NULL;          
    }
    delete []a[i];
    a[i] = NULL;
}
delete []a;
a = NULL;
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解读堆排序算法及用C++实现基于最大堆的堆排序示例
  • C++堆排序算法的实现方法
  • C++ 在堆上开辟与释放二维、三维指针详细解析
  • C++实现基数排序的方法详解

相关文章

  • 2017-05-28C++流程控制中用于跳转的return和goto语句学习教程
  • 2017-05-28C++基础教程之指针拷贝详解
  • 2017-05-28使用OpenGL实现3D立体显示的程序代码
  • 2017-05-28基于ios中的流状态的定义分析
  • 2017-05-28C语言实现汉诺塔游戏
  • 2017-05-28C++ 单链表的基本操作(详解)
  • 2017-05-28C++ Qt属性系统详细介绍
  • 2022-04-30C语言结构体数组详解(带实例演示)
  • 2017-05-28C++多线程编程简单实例
  • 2017-05-28C语言中条件编译详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 浅谈c和c++的某些小区别
    • Hdu 6162 Ch’s gift【思维+树链剖分+线段树】
    • C语言构建动态数组完整实例
    • 深入理解C++中的文件操作
    • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
    • VC获取当前路径及程序名的实现代码
    • C语言转义字符实例详解
    • 进制转换:二进制、八进制、十六进制、十进制之间的转换
    • VC程序在Win32环境下动态链接库(DLL)编程原理
    • Linux下C语言实现C/S模式编程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有