struct的簡捷用法 |
尚未結案
|
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
各位先進們好,小弟在如何使用struct上有疑惑,請指點一二:
利用struct可以很方便的定義出自己需要的結構:
struct [小弟疑惑的地方在於如果需要多次用到該結構體的話,那麽後面的structure variables不是要寫許多啊(聲明一大串呀),有點麻煩呢。 例如在Delphi中: procedure TForm1.Button8Click(Sender: TObject); type TOneRecord = record Name: String; Age: Word; end; var OneRecord: TOneRecord; //這就很方便,需要一個就聲明一個 SecondRecord: TOneRecord; ThreeRecord: TOneRecord; begin OneRecord.Name := 'bigdogchina'; SecondRecord.Name := 'bigdogchina'; ThreeRecord.Name := 'bigdogchina'; ShowMessage(OneRecord.Name); ShowMessage(SecondRecord.Name); ShowMessage(ThreeRecord.Name); end;而在BCB中可以這樣做: ... struct TOneRecord{ AnsiString Name; DWORD Age; }OneRecord,SecondRecord,ThreeRecord; //如果有許多實例的話,要在這後面聲明很多啊,疑惑點就在這裏,有沒有簡捷的寫法 ... void __fastcall TForm1::Button1Click(TObject *Sender) { OneRecord.Name = "bigdogchina"; SecondRecord.Name = "bigdogchina"; ThreeRecord.Name = "bigdogchina"; ShowMessage(OneRecord.Name); ShowMessage(SecondRecord.Name); ShowMessage(ThreeRecord.Name); }如果需要一個該結構的實例,就要在struce後面加上去一個(如果是10個,後面不就要加了10個啊),不如Pascal來的方便(需要時就聲明一個,不用在type後面加),小弟想請教是否有簡捷的寫法呢?謝謝 ================================= <>人生在勤,不索何獲> <>業精於勤荒於嬉,行成於思毀於隨> <>臨淵羡魚不如退而結網>
------
人生在勤,不索何获? |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
bigdogchina 您好: 其實C/C++的structure也是可以這樣做的喔!
struct TOneRecord{ AnsiString Name; DWORD Age; }; // (注意要有分號) // in C struc TOneRecord OneRecord,SecondRecord,ThreeRecord; // in C struc TOneRecord OneRecord,SecondRecord,ThreeRecord; or TOneRecord OneRecord,SecondRecord,ThreeRecord;至於將變數寫在定義後面,主要可能是該結構宣告只用一次,乾脆將定義與變數一塊寫出,或者是更進一步的要建立一個新的型態,如下: typedef struct tagVector { float x; float y; float z; } Vector, *pVector; 此時我們多了兩個新的自定型態:Vector, pVector (指標型態); 所以, Vector v1, v2, v3; 等同於 struct tagVector v1, v2, v3; 等同於 struct { float x; float y; float z; } v1, v2, v3; //=============================================== pVector pv1, pv2; 等同於 (不必再加*號) struct tagVector *pv1, *pv2; 等同於 struct { float x; float y; float z; } *pv1, *pv2; 一樣是方便的喔!RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### |
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
引言: bigdogchina 您好: 其實C/C 的structure也是可以這樣做的喔!Thank you very much!!! 非常精彩的解答,小弟疑惑的地方豁然開朗。richtop前輩嚴謹的治學態度更值得我認真學習 ================================= <>人生在勤,不索何獲> <>業精於勤荒於嬉,行成於思毀於隨> <>臨淵羡魚不如退而結網>struct TOneRecord{ AnsiString Name; DWORD Age; }; // (注意要有分號) // in C struc TOneRecord OneRecord,SecondRecord,ThreeRecord; // in C struc TOneRecord OneRecord,SecondRecord,ThreeRecord; or TOneRecord OneRecord,SecondRecord,ThreeRecord;至於將變數寫在定義後面,主要可能是該結構宣告只用一次,乾脆將定義與變數一塊寫出,或者是更進一步的要建立一個新的型態,如下:typedef struct tagVector { float x; float y; float z; } Vector, *pVector; 此時我們多了兩個新的自定型態:Vector, pVector (指標型態); 所以, Vector v1, v2, v3; 等同於 struct tagVector v1, v2, v3; 等同於 struct { float x; float y; float z; } v1, v2, v3; //=============================================== pVector pv1, pv2; 等同於 (不必再加*號) struct tagVector *pv1, *pv2; 等同於 struct { float x; float y; float z; } *pv1, *pv2; 一樣是方便的喔!RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### 發表人 - richtop 於 2004/08/03 01:04:04
------
人生在勤,不索何获? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |