动态申请二维数组及释放

  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. //定义类型A  
  5. class A  
  6. {  
  7. public:  
  8.     friend class B;  //类型B为友元类  
  9. private:  
  10.     int **p;                //指向二级数组  
  11.     int m_n1;                //行数  
  12.     int m_n2;                //列数  
  13.   
  14. public:  
  15.     A(int n1, int n2);        //生成二维数据  
  16.     ~A();  
  17.     void InitA();            //初始化对象A  
  18. };  
  19.   
  20. A::A(int n1, int n2)  
  21. {  
  22.     m_n1 = n1;                //记录二维数组行数  
  23.     m_n2 = n2;                //记录二维数组列数  
  24.     p = new int* [n1];  
  25.   
  26.     for(int i=0; i<n1; ++i)  
  27.     {  
  28.         p[i] = new int [n2];  
  29.     }  
  30. }  
  31.   
  32. A::~A()  
  33. {  
  34.     for (int i=0; i<m_n1; ++i)  
  35.     {  
  36.         delete[] p[i];  
  37.     }  
  38.     delete[] p;  
  39. }  
  40.   
  41. void A::InitA()  
  42. {  
  43.     for (int i=0; i<m_n1; ++i)  
  44.     {  
  45.         for (int j=0; j<m_n2; ++j)  
  46.         {  
  47.             p[i][j] = i*m_n2 + j;  
  48.         }  
  49.     }  
  50. }  
  51.   
  52. //定义类型B  
  53. class B  
  54. {  
  55. public:  
  56.     void Print(const A& a1);//打印二维数组内的元素  
  57. };  
  58.   
  59. void B::Print(const A& a1)  
  60. {  
  61.     for (int i=0; i<a1.m_n1; ++i)  
  62.     {  
  63.         for (int j=0; j<a1.m_n2; ++j)  
  64.         {  
  65.             cout << a1.p[i][j] << ' ';  
  66.         }  
  67.         cout << endl;  
  68.     }  
  69. }  
  70.   
  71. int main()   
  72. {  
  73.     A a(2, 4);  
  74.     a.InitA();  
  75.     B b;  
  76.     b.Print(a);      
  77. }  
  78.   
  79. //-----------------------------------------------------------------  
  80. //-----------------------------------------------------------------  
  81. //-----------------------------------------------------------------  
  82. //-----------------------------------------------------------------  
  83.   
  84. //C++里 数组new 和delete问题      
  85. //对于数组new的不同方式 和不同的释放方法     
  86. //----------------------------------------------------------------     
  87. // 创建字符指针数组      
  88. char **parr = new char*[100];        
  89. for (int i=0;i<100;++i)  
  90. {  
  91.     parr[i]=new char [50];  
  92. }   
  93. // 释放各个字符数组      
  94. for (int i =0; i < 100; i++)      
  95.        delete [] parr[i];      
  96. //释放字符指针数组      
  97. delete [] parr;      
  98.     
  99. //---------------------------------------------------------------    
  100. // 创建数组      
  101. int *parr = new int[100];      
  102. // 释放数组      
  103. delete [] parr;   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值