Re: [問題] 有關delete與陣列

看板C_and_CPP作者 (咕啾咕啾魔法陣)時間8年前 (2017/03/13 11:37), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串2/2 (看更多)
一.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

03/13 12:06, , 1F
int* Preprocess(int a[7], int n) 呢?
03/13 12:06, 1F

03/13 12:10, , 2F
我要是沒記錯,C++ primer有說這裡的int a[n]等價於
03/13 12:10, 2F

03/13 12:10, , 3F
int *a,我懶得回去翻
03/13 12:10, 3F

03/13 12:11, , 4F
總之記得陣列跟函數不能作為function parameter
03/13 12:11, 4F

03/13 16:53, , 5F
樓上是對的,詳情請查comp.lang.c faq 6.21
03/13 16:53, 5F
文章代碼(AID): #1OnXFcJX (C_and_CPP)
文章代碼(AID): #1OnXFcJX (C_and_CPP)