討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 掌握Salesforce雲端管理秘訣
[ 回上頁 ] [ 討論區發言規則 ]
副程式回傳值問題
更改我的閱讀文章字型大小
作者 : daishu(ㄚ達)
[ 貼文 16 | 人氣 730 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/8/15 下午 04:58:54
請教各位前輩一個副程式回傳值的問題, 如下敘述

bool myfunctioin(IN OUT unsigned long Error_Code)
{
  Error_Code = 2148532329;
  return true;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  unsigned long ErrorCode;

  ErrorCode = 0;
  if (myfunctioin(ErrorCode))
    ShowMessage(SysErrorMessage(ErrorCode));
}

我的問題是, 我想要回傳Error_Code = 2148532329;
但是Error_Code的值卻一直是=0

請問我的寫法哪裡有問題??

我不要副程式直接Reture 2148532329
而是由變數Return值, 並且回傳true, false

感恩~~~~
作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 386 | 人氣 0 | 評價 1770 | 評價/貼文 4.59 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人daishu註記此篇回應為最佳解答 2016/8/15 下午 05:15:10
簡單的說,你把函式參數宣告這樣就可以了:

bool myfunctioin(unsigned long &Error_Code)

預設上,進入函式後,函式拿到的參數其實是:呼叫者所傳入參數之拷貝副本。
所以任你在函式裡怎麼改數值,呼叫函式的地方所傳進去的東西是不會有任何變化的!

在參數前加上一個 & 符號是用來告訴編譯器說:我不要傳入參數的拷貝副本,請直接給我傳入參數本身。
這樣,你在函式內做的任何修改,就會與傳入參數連動了。

若是在 C 語言上面的話,C 語言不支援傳參考的寫法,一般會改用指標的寫法來做:

bool myfunctioin(unsigned long *Error_Code)
作者 : daishu(ㄚ達)
[ 貼文 16 | 人氣 730 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/8/15 下午 05:17:51
感謝冰大的回覆,

後來自己有測試出來, 就跟冰大最後敘述的副程式宣告的一樣

感恩~~~~
作者 : daishu(ㄚ達)
[ 貼文 16 | 人氣 730 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/8/15 下午 05:22:55
感謝冰大的回覆,

後來自己有測試出來, 就跟冰大最後敘述的副程式宣告的一樣

感恩~~~~
 板主 : 徵求中
 > C++ Builder - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - C++ Builder - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
C++ Builder
1 windblown 5420 
2 Raynor 3120 
3 阿泰 2980 
4 workman 1650 
5 Linkin 1360 
6 CrazyStar 1260 
7 青衫 1160 
8 jonay 1080 
9 charlie 900 
10 小呆 770 
C++ Builder
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875