看板 b97902HW 關於我們 聯絡資訊
C++的話我知道做法 不過要用到reference的概念 我記得原理有點像是pointer吧 我用swap交換函數舉例 可以這樣寫 #include<iostream>//for cin,cout using namespace std;//我不會解釋這一行 囧~用devC++都會習慣這樣寫 void swap(int&,int&);//先宣個swap這個函數,詳細運作可寫在下方 int main() { int x=3; int y=5; swap(x,y); cout << "x=" << x << endl ; cout << "y=" << y << endl ; system("pause"); return 0; } void swap(int&a,int&b) //void函數不用回傳值 { int t; t=a; a=b; b=t; return;//不需要輸入回傳值 } 他會輸出x=5 y=3 簡單的說因為妳宣告的是reference變數(在宣告型態後面加「&」) a,b雖然在swap裡面是local variable 但是只要swap裡面a,b的值改變 外面的function有用到swap裡面的參數值也會跟著改變 這個例子應該可以讓你利用 假設你想要在int main()回傳兩個值 你就這樣做 int main() { .... function_name(x,y);//假設x,y已經被宣告 .... } void function_name(int&h,int&j) 再去寫你的function code看要怎麼對h,j下手 最後一行寫return這樣就可以了 不需要回傳值 最後程式執行回到main()時x會自動變成h的值,y會自動變成j的值(型態要一樣就是了) 這樣就可以達到回傳兩個值得效果啦 ================ 很想知道為什麼local variable改變連外面的variable也會變的話..... 等你學到pointer(->)、記憶體位址(&)、記憶體位址所指的值(*)、bla... 恩再說吧@__@ 不好意思來賺P幣的Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.10.69.60 ※ 編輯: IsMe1086 來自: 124.10.69.60 (10/13 01:00)
drazi:#define &(a) (*(a)) 突然間想到的 千萬不要用 10/13 00:58
drazi:用了會連怎麼死的都不知道........這能死的地方太多種了.. 10/13 00:58
ming1053:一樓那什麼怪招...|| 10/13 01:01
LoganChien:可以嗎?Macro NAME 可以是 & ? 10/13 01:02
LoganChien:#include <utility> 10/13 01:02
LoganChien:std::pair func(.....) 10/13 01:03
LoganChien:return std::make_pair(number1, number2); 10/13 01:04
LoganChien:func(...).first // first return 10/13 01:04
LoganChien:func(...).second // second return 10/13 01:04
LoganChien:另一個方法。^_^ 聽說 BOOST 還有 n-tuple(?) 10/13 01:05
IsMe1086:樓上那個我就沒用過了XD 才疏學淺Orz 10/13 01:06
LoganChien:少寫了,是 std::pair<int, int> func(.....) 10/13 01:10
drazi:這樣會CALL幾次@@? 10/13 03:06
drazi:噢然後我承認我的是胡鬧的...至於能不能用 來試試... 10/13 03:06
drazi:結論是不行XD 不過改成字母就可以@@ 10/13 03:07
LoganChien:2 次。不過你也可以這樣寫: 10/13 08:19
LoganChien:std::pair<int, int> ret = func(.....); 10/13 08:19
LoganChien:然後, ret.first, ret.second 10/13 08:19