發信人: ax.bbs@bbs.ee.nthu.edu.tw. (athena), 信區: test
標  題: 星星流講座 0043
發信站: ☆清華電機☆ (Thu Jul 20 21:56:00 1995)
轉信站: star

星星流講座 0043         C 語言教室

第 7 講 之 1            使用者自定結構
                        Topic: Structures

現在來同各位討論有關使用者自定結構的課題。什麼是使用者自定
結構 (structure,以下簡稱結構) 呢?簡單的來說,它是依據使用
者的需求,由使用者自己定義的一種資料的記錄 (data record)。
比方說,我們想要製作一份通訊錄,那麼每一筆資料可能就包含了
姓名、地址和電話三個欄位,這個時候就可以用結構來表示:

        struct record
        {
            char name[20];
            char address[80];
            char tel[20];
        };      /* 注意這最後的分號 */


我們稱 record 為一種結構的型式 (structure type),而它所包含
的 name、address 以及 tel 為這種結構型式的元素 (member)。

結構在 C 語言中的宣告方法很簡單,就是:

        struct 結構名稱
     {
         元素1;
         ....
     } 結構變數1, 結構變數2, ... ;


結構可以是一個或多個相同或不同資料型態變數的集合,例如:

        struct single
        {
            int only_one;       /* 這時候 single 就相當於 int */
        };

        struct score
        {
            long id;            /* 學號 */
            char name[20];      /* 姓名 */
            float grade;        /* 分數 */
        } studentA, studentB, studentC;

上例中 score 這個結構是用來登載學生的成績用的,而 studentA、
studentB 以及 studentC 就是屬於 score 這種類型的結構變數。
結構可以當做變數的資料型態,比方說我們如果要增加一個
studentD 的變數,這時候我們只需宣告:

        struct score studentD;

就可以得到一個新的結構變數 studentD,它屬於 score 這種類型。

結構變數也可以在宣告的時候直接給定初值,例如:

        struct point
        {
            int x;
            int y;
        };

        struct point A = { 2, 3 };


可以在宣告 A 這個結構變數時就依序給定它內容裡各個變數
的初值,上例中就是給定 A 這個結構變數中的 x = 2, y = 3;。很顯
然地這樣子給定字串的初值會有危險,這我們在前面已經提到過了。

若是我們想要單獨地操作結構中的變數,像上例中 A 這個變數裡的 x
那該怎麼辦呢?你只要使用如:

        A.x = 4;

這種型式,就可以自由地操作了。

結構裡的元素也可以是其他的結構,例如:

        struct circle
        {
            struct point center;
            int radius;
        } cir;


這個時候如果要取用 cir 的圓心的 x 坐標要怎麼辦呢?你只需要使用
如:

        cir.center.x = 4;

這種型式,就可以自由地操作了。

--
本文原作者為徐振家,原作刊載於星星神教總壇 ☆清華電機☆ test 板。
你可以以電子文件的形式將本文自由流傳於台灣學術網路,但必須包含此版權聲明。
原作者依中華民國著作權法之規定,享有本文之著作權,請勿抄襲以免觸法。
未經授權任何人不得以任何形式對本文做任何修改及商業上之應用。
其他網路的轉載或其他用途的應用,請先知會作者,並取得其同意。
對本文有任何疑問或意見請 mail 給 ax.bbs@bbs.ee.nthu.edu.tw,謝謝。