作者loveflames (咕啾咕啾魔法阵)
看板C_and_CPP
标题Re: [问题] 有关delete与阵列
时间Mon Mar 13 11:37:06 2017
一.new的使用
乖乖用回圈填floor(log(n)/log(2))+1的值吧
除非你只要填开头几个元素的值,可以这样用
int * x = new int[4]{1,3};//1,3,0,0
二.阵列与函数的基础概念
1.阵列不能作为函数参数
int* Preprocess(int a[], int n)等价於int* Preprocess(int *a, int n)
int阵列传入Preprocess会转型成int *a
不信的可以用sizeof验证
2.阵列不能作为函数返回值
但你可以把函数参数弄成阵列的参考,这合法
三.delete时机
如果你要用Preprocess来new的话
那你最好确保只有ctor会呼叫它
然後写一个对应的释放函数供dtor呼叫
也就是RAII
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.248.56.181
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1489376230.A.4E1.html
1F:→ hakman: int* Preprocess(int a[7], int n) 呢? 03/13 12:06
2F:→ loveflames: 我要是没记错,C++ primer有说这里的int a[n]等价於 03/13 12:10
3F:→ loveflames: int *a,我懒得回去翻 03/13 12:10
4F:→ loveflames: 总之记得阵列跟函数不能作为function parameter 03/13 12:11
5F:→ kokal: 楼上是对的,详情请查comp.lang.c faq 6.21 03/13 16:53