線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1412
推到 Plurk!
推到 Facebook!

請問副程式的OUTPUT問題

答題得分者是:jow
jenwe
一般會員


發表:34
回覆:38
積分:24
註冊:2007-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-31 13:15:23 IP:140.118.xxx.xxx 訂閱
假設我建構一個副程式 int  CatchSide(  int CPointX,int  CPointY)
{

.............;
}
但我輸出的OUTPUT也要有兩個甚至以上的值
那我再呼叫這個副程式的時候,有辦法叫出我個別我需要的OUTPUT嗎?
還是都只能一個?

jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-31 15:46:21 IP:210.66.xxx.xxx 訂閱
(1)回傳值可以用一個struct來做.
(2)將所需要回傳的值, 以call by address 或
call by reference 的方式以參數傳入.
jenwe
一般會員


發表:34
回覆:38
積分:24
註冊:2007-03-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-10-31 16:06:23 IP:140.118.xxx.xxx 訂閱
傳struct結構~那要怎麼接...
不好意思~我不是沒有做功課~是真有點聽不懂您的意思>"<

===================引 用 jow 文 章===================
(1)回傳值可以用一個struct來做.
(2)將所需要回傳的值, 以call by address 或
call by reference 的方式以參數傳入.
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-10-31 16:39:42 IP:210.66.xxx.xxx 訂閱
Call By Value, Call By Reference, Call By Address
是指傳遞參數的形式...^_^

[code cpp]
//---------------------------------------------------------------------------
#ifndef fMainH
#define fMainH
//---------------------------------------------------------------------------
#include
#include
#include
#include <Forms.hpp><br />//---------------------------------------------------------------------------
struct CPoint
{
int X;
int Y;
};
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:
TButton *Button1;
TListBox *ListBox1;
void __fastcall Button1Click(TObject *Sender);
private:
int CallByValue(int x, int y);
CPoint CallByReference(int &x, int &y);
CPoint* CallByAddress(int *x, int *y);
public:
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
[/code]


[code cpp]
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "fMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
}
//---------------------------------------------------------------------------
int TForm1::CallByValue(int x, int y)
{
return x y ;//改變的x, y的值不影響叫用端
}
//---------------------------------------------------------------------------
CPoint TForm1::CallByReference(int &x, int &y)
{
CPoint ret;//要回傳的struct
ret.X=x ;
ret.Y=y ;
return ret;//傳入的 x, y值被改變,並傳回叫用端
}
//---------------------------------------------------------------------------
CPoint* TForm1::CallByAddress(int *x, int *y)
{
CPoint *ret = new CPoint;//要回傳的struct, 叫用端要負責delete
ret->X=(*x) ;
ret->Y=(*y) ;
return ret;//傳入的 x, y值被改變,並傳回叫用端
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString S;
int x=10, y=20;
//Call By Value
int z = CallByValue(x,y);
S.sprintf("x=%d, y=%d, z=%d",x,y,z);
ListBox1->Items->Add(S);
ListBox1->Items->Add("");
//Call By Reference
CPoint p=CallByReference(x, y);
S.sprintf("x=%d, y=%d, p.X=%d, p.Y=%d",x,y,p.X,p.Y);
ListBox1->Items->Add(S);
ListBox1->Items->Add("");
//Call By Address
CPoint *Q=CallByAddress(&x, &y);
try{
S.sprintf("x=%d, y=%d, Q->X=%d, Q->Y=%d",x,y,Q->X,Q->Y);
ListBox1->Items->Add(S);
ListBox1->Items->Add("");
}
__finally{
if(Q) delete Q;//叫用端要負責delete
}
}
//---------------------------------------------------------------------------
[/code]
編輯記錄
jow 重新編輯於 2007-10-31 16:42:32, 註解 無‧
jow 重新編輯於 2007-10-31 16:45:44, 註解 無‧
jenwe
一般會員


發表:34
回覆:38
積分:24
註冊:2007-03-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-10-31 17:04:51 IP:140.118.xxx.xxx 訂閱
阿~~大大一次給三種方法
小弟我真是受用不盡~~

我一定會好好學習,不辜負您的苦心~~謝謝
系統時間:2017-11-18 19:51:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!