在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁(yè) > 博客 > Linux C - C基礎(chǔ)篇十(結(jié)構(gòu)體struct)

            Linux C - C基礎(chǔ)篇十(結(jié)構(gòu)體struct)

            發(fā)布人:嵌入式Linux 時(shí)間:2023-01-13 來(lái)源:工程師 發(fā)布文章
            結(jié)構(gòu)體struct

            在我們編程的過(guò)程中,有時(shí)候需要將有相關(guān)性的不同類型的數(shù)據(jù)組合成一個(gè)整體,以便引用,如學(xué)生的信息有學(xué)號(hào)/姓名/年齡/成績(jī)等,需要用以下數(shù)據(jù)類型表示:

            int id;

            char name[20];

            int age;

            float score;

            將這些不同的數(shù)據(jù)類型組成的整體也是一種數(shù)據(jù)類型, 我們通常稱為構(gòu)造數(shù)據(jù)類型:有一個(gè)或多個(gè)數(shù)據(jù)類型的元素組成一個(gè)集合,我們把這個(gè)集合叫構(gòu)造數(shù)據(jù)類型。構(gòu)造數(shù)據(jù)類型中可能只包含基本數(shù)據(jù)類型也可能還包含有構(gòu)造數(shù)據(jù)類型。上面舉的例子可以構(gòu)造成如下的結(jié)構(gòu)體:

            struct student {

            int id;

            char name[20];

            int age;

            float score;

            };

            構(gòu)造結(jié)構(gòu)體通常以struct開頭,student被稱為結(jié)構(gòu)體的名字,“{}”里面是結(jié)構(gòu)體的成員,結(jié)構(gòu)體成員之間用“;”隔開,結(jié)構(gòu)體的定義以“;”結(jié)尾。

            如何定義結(jié)構(gòu)體變量?

            如上,在定義結(jié)構(gòu)體的過(guò)程當(dāng)中我們只是在定義一種數(shù)據(jù)類型,定義時(shí)并不占用存儲(chǔ)空間,只有當(dāng)定義了這個(gè)類型的變量的時(shí)候才占存儲(chǔ)空間??梢酝ㄟ^(guò)如下方式定義結(jié)構(gòu)體變量stu1:

            struct student {

            int id;

            char name[20];

            int age;

            float score;

            }stu1;

            struct student是結(jié)構(gòu)體的類型,和int、char等一樣屬于數(shù)據(jù)類型,stu1是struct student這種結(jié)構(gòu)體類型的變量。也可以通過(guò)如下方式定義:

            struct {

            int id;

            char name[20];

            int age;

            float score;

            }stu1;

            這種定義方法,這個(gè)結(jié)構(gòu)體沒有結(jié)構(gòu)體名字,不能再定義其他的變量,也就是說(shuō)stu1是這個(gè)結(jié)構(gòu)體唯一的變量,通常只需要這樣一個(gè)結(jié)構(gòu)體變量的時(shí)候會(huì)這樣用。下面的定義方法是我們最常用的:

            struct student stu1;

            struct student *stu1; //結(jié)構(gòu)體指針變量

            結(jié)構(gòu)體變量的賦值及使用

            整體賦值:只能在一個(gè)結(jié)構(gòu)體變量定義的時(shí)候進(jìn)行整體賦值,賦值時(shí)候順序與結(jié)構(gòu)體成員一一對(duì)應(yīng)。

            struct student stu1 = {

            id = 0503070;

            name = "張三";

            age = 18;

            score = 90.5;

            };

            單個(gè)成員賦值:對(duì)單個(gè)成員分別賦值。

            struct student stu1;

            stu1.id = 0503070;

            stu1.name = "張三";

            stu1.age = 18;

            stu1.score = 90.5;

            結(jié)構(gòu)體變量的使用:

            按照:結(jié)構(gòu)體變量名.結(jié)構(gòu)體成員的方式使用,例如上面的stu1.age。

            結(jié)構(gòu)體數(shù)組變量的賦值及使用

            定義一個(gè)結(jié)構(gòu)體數(shù)組變量stu并賦值,當(dāng)然[]里面可以指定數(shù)組大小,也可以不指定。

            struct student stu[] = {

            {0503070, "張三", 18, 90.5},

            {0503071, "李四", 18, 98.5}

            };

            結(jié)構(gòu)體數(shù)組變量使用方式如:stu[0].age、stu[1].age等等。

            結(jié)構(gòu)體指針變量的賦值及使用

            struct student *stu2;

            如上,定義了一個(gè)結(jié)構(gòu)體指針變量stu1,但是這個(gè)指針并沒有指向一個(gè)具體的結(jié)構(gòu)體變量,我們可以通過(guò)下面的方式給這個(gè)指針變量賦值,然后就可以使用了:

            stu2 = &stu1;

            stu2這個(gè)結(jié)構(gòu)體指針指向了stu1這個(gè)結(jié)構(gòu)體變量的地址,我們可以通過(guò)下面的方式訪問(wèn)結(jié)構(gòu)體指針變量指向的結(jié)構(gòu)體里面的成員:

            stu2->age = 20;

            stu2->name = "王五";

            結(jié)構(gòu)體的大小

            結(jié)構(gòu)體在存儲(chǔ)的時(shí)候是字節(jié)對(duì)齊的,例如定義下面的結(jié)構(gòu)體變量:

            struct {

            char c;

            int a;

            }st;

            按照我們正常的理解,char占1個(gè)字節(jié),a占4個(gè)字節(jié),所以結(jié)構(gòu)體變量st就占用5個(gè)字節(jié),但是實(shí)際上呢?

            這是因?yàn)榻Y(jié)構(gòu)體變量在存儲(chǔ)的時(shí)候是字節(jié)對(duì)齊的,這個(gè)結(jié)構(gòu)體中int占4個(gè)字節(jié),是結(jié)構(gòu)體中所有成員最大的,所以在分配的時(shí)候給每個(gè)成員都分配4個(gè)字節(jié)的空間。


            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

            手機(jī)電池相關(guān)文章:手機(jī)電池修復(fù)




            關(guān)鍵詞: 結(jié)構(gòu)體

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉