看板 C_and_CPP 關於我們 聯絡資訊
一.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