目的:熟悉c++动态内存分配

描述:使用c++程序定义动态数组类,使用new和delete操作符实现动态二维数组和三维数组的定义

//main.cpp

//主程序类

#include <iostream>
#include "DynamicArray.h"
#include "DynamicArray3d.h"
using namespace std; int main()
{
cout < < "Hello world!" << endl;
DynamicArray a;
a.printArray();
DynamicArray3d b;
b.printArray();
return 0;
}

//DynamicArray.h

//二维数组头文件

#ifndef DYNAMICARRAY_H
#define DYNAMICARRAY_H
#include <iostream>
using namespace std;
class DynamicArray
{
public:
DynamicArray(int m=5,int n=5);
~DynamicArray();
void printArray();
private:
int **m_pArray;
int m_iSize;
int n_iSize;
}; #endif

//DynamicArray.cpp

//二位数组源文件

#include "DynamicArray.h"

DynamicArray::DynamicArray(int m,int n)
{
int i,j;
m_iSize=m;
n_iSize=n;
m_pArray = new int* [m_iSize];
for (i = 0; i < m_iSize; i++)
m_pArray [i] = new int[n_iSize];
for (i = 0; i < m_iSize; i++)
for (j = 0; j < n_iSize; j++)
{
m_pArray[i][j]=i+10*j;
}
} DynamicArray::~DynamicArray()
{
for (int i = m_iSize; i > 0;)
delete[] m_pArray[--i];
delete[] m_pArray;
}
void DynamicArray::printArray()
{
int i,j;
cout < < "Print Array:" << endl;
for (i = 0; i < m_iSize; i++)
{
for(j = 0; j < n_iSize; j++)
cout<<m_pArray [i][j]<<" ";
cout<<endl;
} }

//DynamicArray3d.h

//三维数组头文件

#ifndef DYNAMICARRAY3D_H
#define DYNAMICARRAY3D_H
#include <iostream>
using namespace std; class DynamicArray3d
{
public:
DynamicArray3d(int m=5,int n=5,int o=5);
~DynamicArray3d();
void printArray();
private:
int ***m_pArray;
int m_iSize;
int n_iSize;
int o_iSize;
}; #endif

//三维数组源文件


#include "DynamicArray3d.h" DynamicArray3d::DynamicArray3d(int m,int n,int o)
{
int i,j,k ;
m_iSize=m;
n_iSize=n;
o_iSize=o;
m_pArray= new int**[m_iSize] ;
for( i = 0 ; i < m_iSize ; i ++ )
m_pArray[i] = new int*[n_iSize] ;
for( i = 0 ; i < m_iSize ; i ++ )
for( j = 0 ; j < n_iSize ; j ++ )
m_pArray[i][j] = new int[o_iSize ] ;
for(i = 0 ; i <m_iSize ; i ++ )
for(j = 0 ; j < n_iSize ; j ++ )
for( k = 0 ; k < o_iSize ; k ++)
m_pArray[i][j][k] = i*100+j*10+k;
} DynamicArray3d::~DynamicArray3d()
{ } void DynamicArray3d::printArray()
{
int i,j,k ;
for(i = 0 ; i <m_iSize ; i ++ )
{
for(j = 0 ; j < n_iSize ; j ++ )
{
for( k = 0 ; k < o_iSize ; k ++)
cout<<m_pArray[i][j][k]<<" ";
cout<<" ";
}
cout<<endl;
} }

本文原创,转载请注 狮子座流星

最新文章

  1. 每天一个linux命令(46):vmstat命令
  2. 在此为LCT开一个永久的坑
  3. 理解HTTP和HTTPS的区别
  4. archlinux 内核编译笔记
  5. 统计《ASP.Net特供视频教程》总长度
  6. 《Cortex-M0权威指南》之体系结构---异常和中断
  7. mina 字节数组编解码器的写法 II
  8. win7(x64)+VS2012+cocos2d-x环境的配置以及试运行
  9. Wzplayer C++ 版本,WzplayerPro
  10. 【Kafka入门】Kafka入门第一篇:基础概念篇
  11. DecimalFormat用法
  12. iOS 将系统文字设置为中文
  13. JavaEE开发之SpringMVC中的路由配置及参数传递详解
  14. 利用原生js做数据管理平台
  15. 【转载】 spring事物配置,声明式事务管理和基于@Transactional注解的使用
  16. JAVA-try-catch-finally-自定义异常例子(适合初学者)
  17. Thunder团队Final版本控制
  18. web office apps 在线预览实践
  19. Visual Studio 2017正式版离线安装方法
  20. Python 使用multiprocessing 特别耗内存

热门文章

  1. Math对象及相关方法
  2. 用户从手机的浏览器访问www.baidu.com,看到的可能跟桌面PC电脑,是不太一样的网页效果,会更适合移动设备使用。请简要分析一下,实现这种网页区分显示的原因及技术原理。
  3. HTTP之Tcp/Ip协议的工作原理
  4. adb命令检测apk启动时间、内存、CPU使用情况、流量、电池电量等——常用的adb命令
  5. FireDAC 接占线导致另一个 hstmt DataSnap
  6. 使用EXCEL绘制三维地图(超简单的五分钟绘制地图方法,妈妈再也不用担心我不会画地图啦~)
  7. Directshow 判断音视频设备是否被占用&lt;转&gt;
  8. Invalid command &#39;Header&#39;, perhaps misspelled or defined by a module not included in the server configuration
  9. FreeSWITCH 客户端fs_cli连接设置(acl)
  10. Git 将本地代码推到 Coding 远程仓库