中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
C語言結(jié)構(gòu)體的定義和使用

結(jié)構(gòu)體的定義和使用

在實(shí)際問題中,一組數(shù)據(jù)往往具有不同的數(shù)據(jù)類型;例如在學(xué)生信息登記表中,姓名為字符型,學(xué)號(hào)為整型或字符型,年齡為整型,性別為字符型,成績(jī)?yōu)檎突驅(qū)嵭?。因?yàn)閿?shù)據(jù)類型不同,顯然不能用一個(gè)數(shù)組來存放。

在C語言中,可以使用結(jié)構(gòu)體(Struct)來存放一組不同類型的數(shù)據(jù)。定義結(jié)構(gòu)體的一般形式為:

struct 結(jié)構(gòu)體名{
成員列表
};

每個(gè)成員都是結(jié)構(gòu)體的組成部分,有名字,也有數(shù)據(jù)類型,形式為:

類型說明符 成員名;

例如用結(jié)構(gòu)體來表示學(xué)生信息:
  1. struct stu{

  2. char *name; //姓名

  3. int num; //學(xué)號(hào)

  4. char sex; //性別

  5. float score; //成績(jī)

  6. };

結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型(也稱復(fù)雜數(shù)據(jù)類型),由若干不同類型的變量(數(shù)據(jù))組成。每個(gè)變量都是結(jié)構(gòu)體的成員(member),每個(gè)成員可以是基本數(shù)據(jù)類型,也可以是構(gòu)造類型。
相應(yīng)的,int、char、float 這些數(shù)據(jù)類型被稱為基本數(shù)據(jù)類型。
上面的代碼定義了一個(gè)結(jié)構(gòu)體,名字為stu。stu由4個(gè)成員組成,分別為 name、num、sex、score。

注意大括號(hào)后面的分號(hào);不能少。

結(jié)構(gòu)體變量

結(jié)構(gòu)體也是一種數(shù)據(jù)類型,可以用來說明變量。例如:
struct stu stu1, stu2;
定義了兩個(gè)變量 stu1 和 stu2,它們都是 stu 類型,都由 4 個(gè)成員組成。注意關(guān)鍵字struct不能少。

stu 就像一個(gè)“模板”,定義出來的變量都具有相同的性質(zhì)。也可以將結(jié)構(gòu)體比作“圖紙”,將結(jié)構(gòu)體變量比作“零件”,根據(jù)同一張圖紙生產(chǎn)出來的零件的特性都是一樣的。

結(jié)構(gòu)體的各個(gè)成員在內(nèi)存中是連續(xù)存儲(chǔ)的。stu1、stu2 的內(nèi)存如下圖所示:

你也可以在定義結(jié)構(gòu)體的同時(shí)定義結(jié)構(gòu)體變量:
  1. struct stu{

  2. char *name; //姓名

  3. int num; //學(xué)號(hào)

  4. char sex; //性別

  5. float score; //成績(jī)

  6. } stu1, stu2;

將變量放在結(jié)構(gòu)體定義的最后即可。

如果只需要 stu1、stu2 兩個(gè)變量,也可以不寫結(jié)構(gòu)體名字:
  1. struct{ //沒有寫 stu

  2. char *name; //姓名

  3. int num; //學(xué)號(hào)

  4. char sex; //性別

  5. float score; //成績(jī)

  6. } stu1, stu2;

這樣做書寫簡(jiǎn)單,但是因?yàn)闆]有結(jié)構(gòu)體名,后面就沒法用該結(jié)構(gòu)體定義新的變量。

也可以用宏定義使一個(gè)符號(hào)常量來表示一個(gè)結(jié)構(gòu)類型,例如:
  1. #define STU struct stu

  2. STU{

  3. char *name; //姓名

  4. int num; //學(xué)號(hào)

  5. char sex; //性別

  6. float score; //成績(jī)

  7. };

  8. STU stu1, stu2;

成員的獲取和賦值

在C語言中,使用點(diǎn)號(hào).來獲取結(jié)構(gòu)體中的一個(gè)成員,一般格式為:

結(jié)構(gòu)變量名.成員名

例如:
  1. stu1.name; //第一個(gè)學(xué)生的姓名

  2. stu2.score; //第二個(gè)學(xué)生的成績(jī)

獲取成員后,就可以對(duì)該成員進(jìn)行賦值了,例如:
  1. stu1.name = 'Tom';

  2. stu2.score = 90.5;

除了可以對(duì)成員進(jìn)行逐一賦值,也可以像數(shù)組一樣整體賦值,例如:
  1. struct stu{

  2. char *name; //姓名

  3. int num; //學(xué)號(hào)

  4. char sex; //性別

  5. float score; //成績(jī)

  6. } stu1, stu2 = { 'Tom', 10, 'M', 90 };

不過整體賦值僅限于上面這樣的情況,也就是定義結(jié)構(gòu)體的同時(shí)聲明變量。下面的寫法是錯(cuò)誤的:
stu2 = { 'Tom', 10, 'M', 90 };

一個(gè)完整的示例:
  1. #include

  2. #define STU struct stu

  3. int main(){

  4. STU{

  5. char *name; //姓名

  6. int num; //學(xué)號(hào)

  7. char sex; //性別

  8. float score; //成績(jī)

  9. };

  10. STU stu1;

  11. stu1.name = 'James Bond';

  12. stu1.num = 1;

  13. stu1.sex = 'M'; //用M表示男性,W表示女性

  14. stu1.score = 99;

  15. printf('Hello everyone! My name is %s, a naughty bo y, but with good scores(%.2f) and top No.(%d)!', st u1.name, stu1.score, stu1.num);


  16. return 0;

  17. }

運(yùn)行結(jié)果:
Hello everyone! My name is James Bond, a naughty boy, but with good scores(99.00) and top No.(1)!

注:本文部分內(nèi)容為轉(zhuǎn)載。如果想要學(xué)習(xí)更深、更細(xì)、更多,那么來加入我們學(xué)習(xí)群吧!QQ群:437946777。不僅有免費(fèi)公開課還有專業(yè)老師講授知識(shí)和面對(duì)面解答哦
點(diǎn)擊鏈接一起加入啦~
或者掃描下方二維碼加入本群。



本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【C語言筆記】結(jié)構(gòu)體
C語言結(jié)構(gòu)體和指針
第9章用戶自己建立數(shù)據(jù)類型
C語言結(jié)構(gòu)體定義的幾種方法
C語言中結(jié)構(gòu)體詳解
編程中國(guó) - 結(jié)構(gòu)體數(shù)組的定義和引用
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服