作者neokir (ゆきぽLOVE!)
看板Programming
標題請問函式參數設定時的"指標"及"參照"參數
時間Fri Apr 23 21:44:12 2010
目前在下碰到的問題如下:
一個結構陣列,要把這個陣列的位址傳給函式去表示(函式內不改變數值,只負責表示)
用指標傳的方式是寫得出來
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