<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > Linux C - C基礎篇十(結構體struct)

Linux C - C基礎篇十(結構體struct)

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

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

int id;

char name[20];

int age;

float score;

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

struct student {

int id;

char name[20];

int age;

float score;

};

構造結構體通常以struct開(kāi)頭,student被稱(chēng)為結構體的名字,“{}”里面是結構體的成員,結構體成員之間用“;”隔開(kāi),結構體的定義以“;”結尾。

如何定義結構體變量?

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

struct student {

int id;

char name[20];

int age;

float score;

}stu1;

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

struct {

int id;

char name[20];

int age;

float score;

}stu1;

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

struct student stu1;

struct student *stu1; //結構體指針變量

結構體變量的賦值及使用

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

struct student stu1 = {

id = 0503070;

name = "張三";

age = 18;

score = 90.5;

};

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

struct student stu1;

stu1.id = 0503070;

stu1.name = "張三";

stu1.age = 18;

stu1.score = 90.5;

結構體變量的使用:

按照:結構體變量名.結構體成員的方式使用,例如上面的stu1.age。

結構體數組變量的賦值及使用

定義一個(gè)結構體數組變量stu并賦值,當然[]里面可以指定數組大小,也可以不指定。

struct student stu[] = {

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

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

};

結構體數組變量使用方式如:stu[0].age、stu[1].age等等。

結構體指針變量的賦值及使用

struct student *stu2;

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

stu2 = &stu1;

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

stu2->age = 20;

stu2->name = "王五";

結構體的大小

結構體在存儲的時(shí)候是字節對齊的,例如定義下面的結構體變量:

struct {

char c;

int a;

}st;

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

這是因為結構體變量在存儲的時(shí)候是字節對齊的,這個(gè)結構體中int占4個(gè)字節,是結構體中所有成員最大的,所以在分配的時(shí)候給每個(gè)成員都分配4個(gè)字節的空間。


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

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




關(guān)鍵詞: 結構體

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>