作者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://www.ptt.cc/bbs/C_and_CPP/M.1489376230.A.4E1.html
→ hakman: int* Preprocess(int a[7], int n) 呢? 03/13 12:06
→ loveflames: 我要是沒記錯,C++ primer有說這裡的int a[n]等價於 03/13 12:10
→ loveflames: int *a,我懶得回去翻 03/13 12:10
→ loveflames: 總之記得陣列跟函數不能作為function parameter 03/13 12:11
→ kokal: 樓上是對的,詳情請查comp.lang.c faq 6.21 03/13 16:53