請問函式參數設定時的"指標"及"參照"參數

看板Programming作者 (ゆきぽLOVE!)時間15年前 (2010/04/23 21:44), 編輯推噓3(308)
留言11則, 3人參與, 最新討論串1/1
目前在下碰到的問題如下: 一個結構陣列,要把這個陣列的位址傳給函式去表示(函式內不改變數值,只負責表示) 用指標傳的方式是寫得出來 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

04/24 04:46, , 1F
先來說說傳指標的方式, 編譯器會隱含
04/24 04:46, 1F

04/24 04:47, , 2F
把第一個元素的位址複製進去, 如果是
04/24 04:47, 2F

04/24 04:48, , 3F
傳參考的方式, 參考型態必須跟傳進來
04/24 04:48, 3F

04/24 04:48, , 4F
的一樣, 也就是「陣列」型態, 所以程
04/24 04:48, 4F

04/24 04:49, , 5F
式碼應該是長這樣 :
04/24 04:49, 5F

04/24 04:52, , 6F
myFunction(const NUM (&rList)[128])
04/24 04:52, 6F

04/24 12:55, , 7F
請問myFunction(const NUM (&rList)[])
04/24 12:55, 7F

04/24 12:55, , 8F
會不會有不知道陣列數量的問題?
04/24 12:55, 8F

04/24 12:55, , 9F
借本文問問
04/24 12:55, 9F

04/24 18:59, , 10F
↑已試過,會造成無法參照(陣列size問題)
04/24 18:59, 10F

04/24 20:50, , 11F
可以overloading來解決阿XD
04/24 20:50, 11F
文章代碼(AID): #1BqQGllk (Programming)
文章代碼(AID): #1BqQGllk (Programming)