c++ 动态数组

这学期学C++  ,晚上有道编程题, 比较坑, 感觉要用动态数组做, 但实际就是要用静态数组, 因为动态的反而更难了。 

用动态数组的时候,发现自己只会创建一维的 int *a = new int[5] ;   然后二维数组怎么创都忘记了, 还是那句话 ,不写代码很容易

  忘记。 然后下面就给出几个例子吧

[cpp]  view plain copy
  1. <span style="white-space:pre">    </span>int **p = new int*[i];  
  2.       
[cpp]  view plain copy
  1. <span style="white-space:pre">    </span>for (int k = 0; k < i ; k++)  
  2.     {  
  3.   
  4.         p[k] = new int[j];  
  5.     }  
[cpp]  view plain copy
  1.   

当然创建方式不止是这么一种 。 另外有一点要强调, 有几个new 就要调用几个delete , 不然会造成内存泄露, 然后多为数组还要delete[].............


还有一点想说的是编程过程的一些问题吧 

  1. 首先是数组的指针表达式   *(*(p+i)+j)   今天居然有同学问我这个怎么写,我也是无语了,感觉这个事必须掌握的啊 
  2.        int **qw = new int[12][23];   这个提示错误

    "int(*)[23]"类型的值不能用于初始化" int * *"类型的实例 ;  很显然是类型不匹配,所以new 不了来了  实际改法也很简单, 就是int (*p)[23] = new int [12][23] ; 

3 还有一点是在传参数的时候, 二维数组可以**p 做形参, 也可是(*p)[23] 这种格式  




C++ 中动态数组还是很有用的, 特别是在类当中, 深拷贝这类的 ,还是很值得学习的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值