請教有關函數的用法 |
尚未結案
|
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
想請教一個問題:
假設在main()中有一函數,並有一個輸入變數。
void main(void)
{
var_type var; // 是一變數、指標、或陣列、結構.... Fun_A( var ); }
//傳入 var至Fun_A()
Fun_A ( var_type var1)
{
..............;
Fun_B( var1 );
// 在Fun_B又必須用到 var1。
...........;
} Fun_B ( var_type var2)
{
..............;
Fun_B( var2 );
// 在Fun_C又必須用到 var2,也就是Fun_A中的var1。
...........; } Fun_C ( var_type var3)
{ .............. }
其實這幾個函數所要傳的內容是一樣的,
但又不是(或不能)宣告全域變數,或許Fun_D()、Fun_E....沒用到。
請問,以上作法是一般性作法嗎?但這樣好像感覺怪怪的,
如果有此情形,大家是怎麼寫呢?
謝謝!!!
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 想請教一個問題: 假設在main()中有一函數,並有一個輸入變數。 void main(void) { var_type var; // 是一變數、指標、或陣列、結構.... Fun_A( var ); } //傳入 var至Fun_A() Fun_A ( var_type var1) { ..............; Fun_B( var1 ); // 在Fun_B又必須用到 var1。 ...........; } Fun_B ( var_type var2) { ..............; Fun_B( var2 ); // 在Fun_C又必須用到 var2,也就是Fun_A中的var1。 ...........; } Fun_C ( var_type var3) { .............. } 其實這幾個函數所要傳的內容是一樣的, 但又不是(或不能)宣告全域變數,或許Fun_D()、Fun_E....沒用到。 請問,以上作法是一般性作法嗎?但這樣好像感覺怪怪的, 如果有此情形,大家是怎麼寫呢? 謝謝!!!frederick 你好: function spec 該怎麼定義,並沒有一定的標準< > 只要能夠符合需求,功能劃分清楚(容易偵錯、容易維護)就可以了< > -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
frederick
中階會員 發表:101 回覆:108 積分:66 註冊:2002-08-01 發送簡訊給我 |
再請教一下:
如果我有一變數,或許是一個陣列之類的。
我在main()、Fun_C()才會用到它。
但Fun_C()是經由main()->Fun_A()->Fun_B()->Fun_C()這過程。
也就是Fun_C()不會從main()、Fun_A()呼叫,是由Fun_B()呼叫。
難道我要從main()一直帶此變數到Fun_C()?
但這過程Fun_A()、Fun_B()並不會用到此一變數(或一組陣列之類的)。
此變數又不能作為全域,因有些函數並不會用到,
但如果把此變數從上一直帶到下,感覺好像蠻危險的,
且好像不符合資訊隱藏的規則,這....這該如何是好呢?
嗯~或許是我哪些觀念還搞不清楚,還希望指點一下。
謝謝!
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 再請教一下: 如果我有一變數,或許是一個陣列之類的。 我在main()、Fun_C()才會用到它。 但Fun_C()是經由main()->Fun_A()->Fun_B()->Fun_C()這過程。 也就是Fun_C()不會從main()、Fun_A()呼叫,是由Fun_B()呼叫。 難道我要從main()一直帶此變數到Fun_C()? 但這過程Fun_A()、Fun_B()並不會用到此一變數(或一組陣列之類的)。 此變數又不能作為全域,因有些函數並不會用到, 但如果把此變數從上一直帶到下,感覺好像蠻危險的, 且好像不符合資訊隱藏的規則,這....這該如何是好呢? 嗯~或許是我哪些觀念還搞不清楚,還希望指點一下。frederick 你好: 以下是我個人的建議(三種方式) (
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
C 語言的精華就在於Class三部曲,封裝、繼承、多型
如果你不熟悉,觀察BCB的Form就是一個類別的最佳學習範本,
你的問題有三種解法:我依簡易度排列,指標處理不好,影響會很大。
1.宣告一個全域變數。
2.將你的變數寫在Class中,
寫在public:表示要提供其他類別使用,使用方法 FuncA(Form1->MyVar1)
其他類別使用方法 Form2->MyVar2 = Form1->MyVar1
寫在private:表示不提供其他類別使用,變數的生命週期只有在目前這個類別
3.使用指標。
要用的時候把他new出來,例如 Type *pointName = new Type[size];
確定用完時delete掉,例如 delete[] pointName;
祝好運!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |