看板 C_and_CPP 關於我們 聯絡資訊
...略... : 我將問題做成一個簡易的程式碼 http://ideone.com/PmKhU ...略... 因為13戒已經有詳解,所以我不特別解說你的疑惑. 只大概解說用法的不同, 1. int test(double* pD) { return 1; } int main() { double D[1000];//也可以用double *D=new double[1000]; test(D); return 0; } 這種用法是處理已經開好的陣列, 然後傳入函式. 但是有一種情況是會在函式裡面才給予陣列大小. 就是下面的用法 2. int test(double** ppD) { *ppD = =new double[1000]; return 1; } int main() { double* D; test(&D); return 0; } 這種的需求是有的, 例如getline這函式, 就是類似的觀念. 當然你也可以用c++ ref的幫忙, 那就變成下面那樣. int test(double* &ppD) { ppD = =new double[1000]; return 1; } int main() { double* D; test(D); return 0; } 至於其中的原理,請去看13戒.就是置底的文章. 但是以lib 函式的用法, 通常先在傳入函式前先開好空間大小! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.48.98
diabloevagto:1的test(&D);是不是多打了&? 02/26 14:37
angleevil:yes! 02/26 14:38
※ 編輯: angleevil 來自: 111.251.48.98 (02/26 14:39)
angleevil:修正了 02/26 14:39
ieck:謝謝您!!! 非常感謝 a大您花時間解說~~~ ^^ 02/26 22:07