亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦>學(xué)習(xí)英語(yǔ)>專(zhuān)業(yè)英語(yǔ)>計(jì)算機(jī)英語(yǔ)>

      c語(yǔ)言結(jié)構(gòu)體的用法

      時(shí)間: 長(zhǎng)思709 分享
        結(jié)構(gòu)是由基本數(shù)據(jù)類(lèi)型構(gòu)成的、并用一個(gè)標(biāo)識(shí)符來(lái)命名的各種變量的組合。
        結(jié)構(gòu)中可以使用不同的數(shù)據(jù)類(lèi)型。下面小編就給大家介紹下c語(yǔ)言結(jié)構(gòu)體的用法。
              c語(yǔ)言結(jié)構(gòu)體的用法如下:
        1. 結(jié)構(gòu)說(shuō)明和結(jié)構(gòu)變量定義
        在Turbo C中, 結(jié)構(gòu)也是一種數(shù)據(jù)類(lèi)型, 可以使用結(jié)構(gòu)變量, 因此, 象其它
        類(lèi)型的變量一樣, 在使用結(jié)構(gòu)變量時(shí)要先對(duì)其定義。
        定義結(jié)構(gòu)變量的一般格式為:
        struct 結(jié)構(gòu)名
        {
        類(lèi)型 變量名;
        類(lèi)型 變量名;
        ...
        } 結(jié)構(gòu)變量;
        結(jié)構(gòu)名是結(jié)構(gòu)的標(biāo)識(shí)符不是變量名。
        類(lèi)型為第二節(jié)中所講述的五種數(shù)據(jù)類(lèi)型(整型、浮點(diǎn)型、字符型、指針型和
        無(wú)值型)。
        構(gòu)成結(jié)構(gòu)的每一個(gè)類(lèi)型變量稱為結(jié)構(gòu)成員, 它象數(shù)組的元素一樣, 但數(shù)組中
        元素是以下標(biāo)來(lái)訪問(wèn)的, 而結(jié)構(gòu)是按變量名字來(lái)訪問(wèn)成員的。
        下面舉一個(gè)例子來(lái)說(shuō)明怎樣定義結(jié)構(gòu)變量。
        struct string
        {
        char name[8];
        int age;
        char sex[2];
        char depart[20];
        float wage1, wage2, wage3, wage4, wage5;
        } person;
        這個(gè)例子定義了一個(gè)結(jié)構(gòu)名為string的結(jié)構(gòu)變量person, 如果省略變量名
        person, 則變成對(duì)結(jié)構(gòu)的說(shuō)明。用已說(shuō)明的結(jié)構(gòu)名也可定義結(jié)構(gòu)變量。這樣定義
        時(shí)上例變成:
        struct string
        {
        char name[8];
        int age;
        char sex[2];
        char depart[20];
        float wage1, wage2, wage3, wage4, wage5;
        };
        struct string person;
        如果需要定義多個(gè)具有相同形式的結(jié)構(gòu)變量時(shí)用這種方法比較方便, 它先作
        結(jié)構(gòu)說(shuō)明, 再用結(jié)構(gòu)名來(lái)定義變量。
        例如:
        struct string Tianyr, Liuqi, ...;
        如果省略結(jié)構(gòu)名, 則稱之為無(wú)名結(jié)構(gòu), 這種情況常常出現(xiàn)在函數(shù)內(nèi)部, 用這
        種結(jié)構(gòu)時(shí)前面的例子變成:
        struct
        {
        char name[8];
        int age;
        char sex[2];
        char depart[20];
        float wage1, wage2, wage3, wage4, wage5;
        } Tianyr, Liuqi;
        2. 結(jié)構(gòu)變量的使用
        結(jié)構(gòu)是一個(gè)新的數(shù)據(jù)類(lèi)型, 因此結(jié)構(gòu)變量也可以象其它類(lèi)型的變量一樣賦值、
        運(yùn)算, 不同的是結(jié)構(gòu)變量以成員作為基本變量。
        結(jié)構(gòu)成員的表示方式為:
        結(jié)構(gòu)變量.成員名
        如果將"結(jié)構(gòu)變量.成員名"看成一個(gè)整體, 則這個(gè)整體的數(shù)據(jù)類(lèi)型與結(jié)構(gòu)中
        該成員的數(shù)據(jù)類(lèi)型相同, 這樣就可象前面所講的變量那樣使用。
        下面這個(gè)例子定義了一個(gè)結(jié)構(gòu)變量, 其中每個(gè)成員都從鍵盤(pán)接收數(shù)據(jù), 然后
        對(duì)結(jié)構(gòu)中的浮點(diǎn)數(shù)求和, 并顯示運(yùn)算結(jié)果, 同時(shí)將數(shù)據(jù)以文本方式存入一個(gè)名為
        wage.dat的磁盤(pán)文件中。請(qǐng)注意這個(gè)例子中不同結(jié)構(gòu)成員的訪問(wèn)。
        例3:
       ?。 nclude <stdio.h>
        main()
        {
        struct{ /*定義一個(gè)結(jié)構(gòu)變量*/
        char name[8];
        int age;
        char sex[2];
        char depart[20];
        float wage1, wage2, wage3, wage4,
        wage5;
        }a;
        FILE *fp;
        float wage;
        char c=’Y’;
        fp="fopen"("wage.dat", "w");
        /*創(chuàng)建一個(gè)文件只寫(xiě)*/
        while(c==’Y’||c==’y’)
        /*判斷是否繼續(xù)循環(huán)*/
        {
        printf("/nName:");
        scanf("%s", a.name); /*輸入姓名*/
        printf("Age:");
        scanf("%d", &a.wage); /*輸入年齡*/
        printf("Sex:");
        scanf("%d", a.sex);
        printf("Dept:");
        scanf("%s", a.depart);
        printf("Wage1:");
        scanf("%f", &a.wage1); /*輸入工資*/
        printf("Wage2:");
        scanf("%f", &a.wage2);
        printf("Wage3:");
        scanf("%f", &a.wage3);
        printf("Wage4:");
        scanf("%f", &a.wage4);
        printf("Wage5:");
        scanf("%f", &a.wage5);
        wage=a.wage1+a.wage2+a.wage3+a.wage4+a.wage5;
        printf("The sum of wage is
        %6.2f/n", wage);/*顯示結(jié)果*/
        fprintf(fp,
        "%10s%4d%4s%30s%10.2f/n", /*結(jié)果寫(xiě)入文件*/
        a.name, a.age, a.sex,
        a.depart, wage);
        while(1)
        {
        printf("Continue<Y/N>");
        c="getche"();
        if(c==’Y’||c==’y’||c==’N’||c==’n’)
        break;
        }
        }
        fclose(fp);
        }
        3. 結(jié)構(gòu)數(shù)組和結(jié)構(gòu)指針
        結(jié)構(gòu)是一種新的數(shù)據(jù)類(lèi)型, 同樣可以有結(jié)構(gòu)數(shù)組和結(jié)構(gòu)指針。
        一、結(jié)構(gòu)數(shù)組
        結(jié)構(gòu)數(shù)組就是具有相同結(jié)構(gòu)類(lèi)型的變量集合。假如要定義一個(gè)班級(jí)40個(gè)同學(xué)
        的姓名、性別、年齡和住址, 可以定義成一個(gè)結(jié)構(gòu)數(shù)組。如下所示:
        struct{
        char name[8];
        char sex[2];
        int age;
        char addr[40];
        }student[40];
        也可定義為:
        struct string{
        char name[8];
        char sex[2];
        int age;
        char addr[40];
        };
        struct string student[40];
        需要指出的是結(jié)構(gòu)數(shù)組成員的訪問(wèn)是以數(shù)組元素為結(jié)構(gòu)變量的, 其形式為:
        結(jié)構(gòu)數(shù)組元素.成員名
        例如:
        student[0].name
        student[30].age
        實(shí)際上結(jié)構(gòu)數(shù)組相當(dāng)于一個(gè)二維構(gòu)造, 第一維是結(jié)構(gòu)數(shù)組元素, 每個(gè)元素是
        一個(gè)結(jié)構(gòu)變量, 第二維是結(jié)構(gòu)成員。
        注意:
        結(jié)構(gòu)數(shù)組的成員也可以是數(shù)組變量。
        例如:
        struct a
        {
        int m[3][5];
        float f;
        char s[20];
        }y[4];
        為了訪問(wèn)結(jié)構(gòu)a中結(jié)構(gòu)變量y[2]的這個(gè)變量, 可寫(xiě)成
        y[2].m[1][4]
        二、結(jié)構(gòu)指針
        結(jié)構(gòu)指針是指向結(jié)構(gòu)的指針。它由一個(gè)加在結(jié)構(gòu)變量名前的"*" 操作符來(lái)定
        義, 例如用前面已說(shuō)明的結(jié)構(gòu)定義一個(gè)結(jié)構(gòu)指針如下:
        struct string{
        char name[8];
        char sex[2];
        int age;
        char addr[40];
        }*student;
        也可省略結(jié)構(gòu)指針名只作結(jié)構(gòu)說(shuō)明, 然后再用下面的語(yǔ)句定義結(jié)構(gòu)指針。
        struct string *student;
        使用結(jié)構(gòu)指針對(duì)結(jié)構(gòu)成員的訪問(wèn), 與結(jié)構(gòu)變量對(duì)結(jié)構(gòu)成員的訪問(wèn)在表達(dá)方式
        上有所不同。結(jié)構(gòu)指針對(duì)結(jié)構(gòu)成員的訪問(wèn)表示為:
        結(jié)構(gòu)指針名->結(jié)構(gòu)成員
        其中"->"是兩個(gè)符號(hào)"-"和">"的組合, 好象一個(gè)箭頭指向結(jié)構(gòu)成員。例如要
        給上面定義的結(jié)構(gòu)中name和age賦值, 可以用下面語(yǔ)句:
        strcpy(student->name, "Lu G.C");
        student->age=18;
        實(shí)際上, student->name就是(*student).name的縮寫(xiě)形式。
        需要指出的是結(jié)構(gòu)指針是指向結(jié)構(gòu)的一個(gè)指針, 即結(jié)構(gòu)中第一個(gè)成員的首地
        址, 因此在使用之前應(yīng)該對(duì)結(jié)構(gòu)指針初始化, 即分配整個(gè)結(jié)構(gòu)長(zhǎng)度的字節(jié)空間,
        這可用下面函數(shù)完成, 仍以上例來(lái)說(shuō)明如下:
        student=(struct string*)malloc(size of
        (struct string));
        size of (struct string)自動(dòng)求取string結(jié)構(gòu)的字節(jié)長(zhǎng)度,
        malloc() 函數(shù)
        定義了一個(gè)大小為結(jié)構(gòu)長(zhǎng)度的內(nèi)存區(qū)域, 然后將其詐地址作為結(jié)構(gòu)指針?lè)祷亍?/div>
        注意:
        1. 結(jié)構(gòu)作為一種數(shù)據(jù)類(lèi)型, 因此定義的結(jié)構(gòu)變量或結(jié)構(gòu)指針變量同樣有局
        部變量和全程變量, 視定義的位置而定。
        2. 結(jié)構(gòu)變量名不是指向該結(jié)構(gòu)的地址, 這與數(shù)組名的含義不同, 因此若需
        要求結(jié)構(gòu)中第一個(gè)成員的首地址應(yīng)該是&[結(jié)構(gòu)變量名]。
        4. 結(jié)構(gòu)的復(fù)雜形式
        一、嵌套結(jié)構(gòu)
        嵌套結(jié)構(gòu)是指在一個(gè)結(jié)構(gòu)成員中可以包括其它一個(gè)結(jié)構(gòu), Turbo C 允許這種
        嵌套。
        例如: 下面是一個(gè)有嵌套的結(jié)構(gòu)
        struct string{
        char name[8];
        int age;
        struct addr address;
        } student;
        其中: addr為另一個(gè)結(jié)構(gòu)的結(jié)構(gòu)名, 必須要先進(jìn)行, 說(shuō)明, 即
        struct addr{
        char city[20];
        unsigned lon zipcode;
        char tel[14];
        }
        如果要給student結(jié)構(gòu)中成員address結(jié)構(gòu)中的zipcode賦值, 則可寫(xiě)成:
        student.address.zipcode=200001;
        每個(gè)結(jié)構(gòu)成員名從最外層直到最內(nèi)層逐個(gè)被列出, 即嵌套式結(jié)構(gòu)成員的表達(dá)
        方式是:
        結(jié)構(gòu)變量名.嵌套結(jié)構(gòu)變量名.結(jié)構(gòu)成員名
        其中: 嵌套結(jié)構(gòu)可以有很多, 結(jié)構(gòu)成員名為最內(nèi)層結(jié)構(gòu)中不是結(jié)構(gòu)的成員名。
        二、位結(jié)構(gòu)
        位結(jié)構(gòu)是一種特殊的結(jié)構(gòu), 在需按位訪問(wèn)一個(gè)字節(jié)或字的多個(gè)位時(shí), 位結(jié)構(gòu)
        比按位運(yùn)算符更加方便。
        位結(jié)構(gòu)定義的一般形式為:
        struct位結(jié)構(gòu)名{
        數(shù)據(jù)類(lèi)型 變量名: 整型常數(shù);
        數(shù)據(jù)類(lèi)型 變量名: 整型常數(shù);
        } 位結(jié)構(gòu)變量;
        其中: 數(shù)據(jù)類(lèi)型必須是int(unsigned或signed)。 整型常數(shù)必須是非負(fù)的整
        數(shù), 范圍是0~15, 表示二進(jìn)制位的個(gè)數(shù), 即表示有多少位。
        變量名是選擇項(xiàng), 可以不命名, 這樣規(guī)定是為了排列需要。
        例如: 下面定義了一個(gè)位結(jié)構(gòu)。
        struct{
        unsigned incon: 8;
        /*incon占用低字節(jié)的0~7共8位*/
        unsigned txcolor:
        4;/*txcolor占用高字節(jié)的0~3位共4位*/
        unsigned bgcolor:
        3;/*bgcolor占用高字節(jié)的4~6位共3位*/
        unsigned blink: 1; /*blink占用高字節(jié)的第7位*/
        }ch;
        位結(jié)構(gòu)成員的訪問(wèn)與結(jié)構(gòu)成員的訪問(wèn)相同。
        例如: 訪問(wèn)上例位結(jié)構(gòu)中的bgcolor成員可寫(xiě)成:
        ch.bgcolor
        注意:
        1. 位結(jié)構(gòu)中的成員可以定義為unsigned, 也可定義為signed, 但當(dāng)成員長(zhǎng)
        度為1時(shí), 會(huì)被認(rèn)為是unsigned類(lèi)型。因?yàn)閱蝹€(gè)位不可能具有符號(hào)。
        2. 位結(jié)構(gòu)中的成員不能使用數(shù)組和指針, 但位結(jié)構(gòu)變量可以是數(shù)組和指針,
        如果是指針, 其成員訪問(wèn)方式同結(jié)構(gòu)指針。
        3. 位結(jié)構(gòu)總長(zhǎng)度(位數(shù)), 是各個(gè)位成員定義的位數(shù)之和, 可以超過(guò)兩個(gè)字
        節(jié)。
        4. 位結(jié)構(gòu)成員可以與其它結(jié)構(gòu)成員一起使用。
        例如:
        struct info{
        char name[8];
        int age;
        struct addr address;
        float pay;
        unsigned state: 1;
        unsigned pay: 1;
        }workers;’
        上例的結(jié)構(gòu)定義了關(guān)于一個(gè)工從的信息。其中有兩個(gè)位結(jié)構(gòu)成員, 每個(gè)位結(jié)
        構(gòu)成員只有一位, 因此只占一個(gè)字節(jié)但保存了兩個(gè)信息, 該字節(jié)中第一位表示工
        人的狀態(tài), 第二位表示工資是否已發(fā)放。由此可見(jiàn)使用位結(jié)構(gòu)可以節(jié)省存貯空間。

      c語(yǔ)言結(jié)構(gòu)體的用法

      結(jié)構(gòu)是由基本數(shù)據(jù)類(lèi)型構(gòu)成的、并用一個(gè)標(biāo)識(shí)符來(lái)命名的各種變量的組合。 結(jié)構(gòu)中可以使用不同的數(shù)據(jù)類(lèi)型。下面小編就給大家介紹下c語(yǔ)言結(jié)構(gòu)體的用法。 1. 結(jié)構(gòu)說(shuō)明和結(jié)構(gòu)變量定義 在Turbo C中, 結(jié)構(gòu)也是一種數(shù)據(jù)類(lèi)型, 可以使用結(jié)構(gòu)變量,
      推薦度:
      點(diǎn)擊下載文檔文檔為doc格式

      精選文章

      • c語(yǔ)言宏的用法
        c語(yǔ)言宏的用法

        C語(yǔ)言程序中廣泛的使用宏定義,采用關(guān)鍵字define進(jìn)行定義,宏只是一種簡(jiǎn)單的字符串替換,根據(jù)是否帶參數(shù)分為無(wú)參和帶參。宏的簡(jiǎn)單應(yīng)用很容易掌握,下

      • c語(yǔ)言函數(shù)if的用法怎么用
        c語(yǔ)言函數(shù)if的用法怎么用

        在c語(yǔ)言中游學(xué)多函數(shù)用法都有很大考究,如何正確使用也是很關(guān)鍵的,今天學(xué)習(xí)啦小編在這里為大家介紹c語(yǔ)言函數(shù)if的用法,希望對(duì)大家有所幫助! c語(yǔ)言函

      • c語(yǔ)言方括號(hào)的用法
        c語(yǔ)言方括號(hào)的用法

        C語(yǔ)言中方括號(hào)是用來(lái)定義數(shù)組的表示數(shù)組的長(zhǎng)度,而大括號(hào)是用來(lái)賦初始值的,表示這個(gè)變量的取值,下面小編就來(lái)為大家介紹c語(yǔ)言方括號(hào)的用法。 1、單

      • c語(yǔ)言的用法
        c語(yǔ)言的用法

        語(yǔ)言程序設(shè)計(jì)是一門(mén)基礎(chǔ)的程序設(shè)計(jì)語(yǔ)言,學(xué)好這門(mén)課對(duì)以后程序開(kāi)發(fā)至關(guān)重要。由于C語(yǔ)言靈活、強(qiáng)大,初學(xué)者要全面地掌握它非常吃力,因此在學(xué)習(xí)C語(yǔ)言的

      515198