看板 Programming 關於我們 聯絡資訊
目前在下碰到的問題如下: 一個結構陣列,要把這個陣列的位址傳給函式去表示(函式內不改變數值,只負責表示) 用指標傳的方式是寫得出來 EX: -------------------------------------- typedef struct NUMBER{ int num; int count; }NUM; NUM list[128]; //函式呼叫 myFunction1(list); //寫法1 myFunction2(&list); //寫法2 //函式本體 void myFunction1(const NUM* const pList){...} //寫法1:直接傳第一個元素的位址 void myFunction2(const NUM (*pList)[128]){...} //寫法2:傳該陣列(含128個元素) 的位址 -------------------------------------- 不過由於傳指標給函式 = 還是會複製指標變數 = 佔一點點空間 所以個人想試著用"參照"的方式,來把位址傳給函式 void myFunction3(const NUM* (&rList)){...} 但很遺憾的編譯無法成功.... 由於個人之前有練習過"指向函式的指標",藉由該練習得知用參照一樣可以指向位址 (例: int (*pFunc)(int , int); int (&rFunc)(int , int); ) 加上翻精華區後得知C++中有『*&』的"參照指標的參照(別名)變數" 理論上應該可以傳入才對.... 請問小弟是在什麼地方出鎚了呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 113.152.83.170
loveme00835:先來說說傳指標的方式, 編譯器會隱含140.121.197.115 04/24 04:46
loveme00835:把第一個元素的位址複製進去, 如果是140.121.197.115 04/24 04:47
loveme00835:傳參考的方式, 參考型態必須跟傳進來140.121.197.115 04/24 04:48
loveme00835:的一樣, 也就是「陣列」型態, 所以程140.121.197.115 04/24 04:48
loveme00835:式碼應該是長這樣 :140.121.197.115 04/24 04:49
loveme00835:myFunction(const NUM (&rList)[128])140.121.197.115 04/24 04:52
longrider:請問myFunction(const NUM (&rList)[]) 218.162.110.18 04/24 12:55
longrider:會不會有不知道陣列數量的問題? 218.162.110.18 04/24 12:55
longrider:借本文問問 218.162.110.18 04/24 12:55
neokir:↑已試過,會造成無法參照(陣列size問題) 113.152.66.63 04/24 18:59
loveme00835:可以overloading來解決阿XD140.121.197.115 04/24 20:50