溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語言怎么定義一個(gè)結(jié)構(gòu)體

發(fā)布時(shí)間:2021-07-02 16:31:51 來源:億速云 閱讀:380 作者:Leah 欄目:互聯(lián)網(wǎng)科技

本篇文章給大家分享的是有關(guān)C語言怎么定義一個(gè)結(jié)構(gòu)體,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。



首先先思考一個(gè)問題,假設(shè)某一天你去了一家策劃公司,接到了一個(gè)策劃需求,比如為新上市的某款手機(jī)寫一個(gè)市場推廣的文案,并且在電腦上面打印出來。那么在寫這個(gè)文案的時(shí)候,你肯定是會(huì)需要著重地去介紹這款手機(jī)的一些信息的,比如:手機(jī)品牌:pear,型號(hào):13mini,機(jī)身長度:150.9mm,機(jī)身寬度:75.7mm,機(jī)身厚度:8.3mm,屏幕尺寸6.1英寸,定價(jià)5899.00等等這系列信息。要實(shí)現(xiàn)這一個(gè)程序非常簡單,只需要去將這些變量定義好,定義完成之后再去打印在電腦屏幕上即可,如圖1所示。
 C語言怎么定義一個(gè)結(jié)構(gòu)體
圖1 定義變量去描述手機(jī)參數(shù)
這個(gè)程序非常簡單就能實(shí)現(xiàn)了,也非常順利就可以打印出手機(jī)主要的介紹信息。那么第二個(gè)問題來了,假設(shè)這家公司現(xiàn)在也學(xué)會(huì)了營銷,一次發(fā)布會(huì)會(huì)發(fā)布多款手機(jī),這些手機(jī)分別被命名為13mini,13,13Max,13 MaxPlus,并且在一張海報(bào)上將這些手機(jī)所有維度的參數(shù)信息打印出來,就如圖1一樣,那么此時(shí)該如何處理呢?
最簡單的辦法就是分別給每個(gè)手機(jī)的手機(jī)品牌,型號(hào),機(jī)身長度,機(jī)身寬度,機(jī)身厚度,屏幕尺寸,定價(jià)等等這系列信息定義一個(gè)變量,如型號(hào)這個(gè)信息,Pear 13可以定義為Pear13_model,Pear13 mini可以定義為Pear13Mini_model,以此類推。試想一下,每個(gè)手機(jī)我們所展現(xiàn)出來的信息有7個(gè),那么4個(gè)配置的手機(jī)一共要定義28個(gè)不同的變量。這么多的變量對(duì)于程序設(shè)計(jì)來說是不友好的,因?yàn)樘嗟莫?dú)立的變量會(huì)讓程序看上去非常雜亂,甚至編程者自己到最后都搞不清楚這些變量的意思了。
我們?cè)僮屑?xì)觀察這些變量,其實(shí)每一個(gè)手機(jī)的變量都是固定的,就是手機(jī)品牌,型號(hào),機(jī)身長度,機(jī)身寬度,機(jī)身厚度,屏幕尺寸,定價(jià)這七個(gè)維度的信息。那么我們是否可以將這七個(gè)信息組合成一個(gè)集合,每次增加描述新手機(jī)變量的時(shí)候,我們只需要增加一個(gè)集合,就可以同時(shí)將這七個(gè)維度的信息全都描述出來?
這種想法顯然是合理的,在C語言中,這種由多個(gè)基本變量組成的集合式的復(fù)合變量叫做結(jié)構(gòu)體。當(dāng)然這個(gè)定義還需要再補(bǔ)充一點(diǎn),一個(gè)結(jié)構(gòu)體也可以包含另一個(gè)結(jié)構(gòu)體。
結(jié)構(gòu)體在C語言中使用關(guān)鍵詞“struct“進(jìn)行定義,其定義方式有兩種。
第一種方式是在定義結(jié)構(gòu)體類型的時(shí)候同時(shí)定義結(jié)構(gòu)體變量,其形式為:
struct 結(jié)構(gòu)體標(biāo)簽
{
     數(shù)據(jù)類型 成員變量名;
     數(shù)據(jù)類型 成員變量名
     ……
} 結(jié)構(gòu)體變量名;
第二種方式是先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量,其形式為:
struct
struct 結(jié)構(gòu)體標(biāo)簽
{
     數(shù)據(jù)類型 成員變量名;
     數(shù)據(jù)類型 成員變量名
     ……
};//定義結(jié)構(gòu)體類型
struct 結(jié)構(gòu)體標(biāo)簽 結(jié)構(gòu)體變量1, 結(jié)構(gòu)體變量2……;
當(dāng)使用第一種方式時(shí),結(jié)構(gòu)體標(biāo)簽可以省略。
很多讀者在第一次接觸結(jié)構(gòu)體的時(shí)候,可能經(jīng)常會(huì)搞不明白這里的結(jié)構(gòu)體標(biāo)簽,結(jié)構(gòu)體變量名,結(jié)構(gòu)體成員之間是什么關(guān)系。我們可以舉一個(gè)很形象的例子來解釋一下。人的思維具有一個(gè)很強(qiáng)大的功能,這就是概括性或者說是歸一性,表現(xiàn)出一點(diǎn)就是每個(gè)人都非常善于找規(guī)律從而對(duì)一些客觀事物的特點(diǎn)進(jìn)行總結(jié)。比如當(dāng)你描述小麗外表的時(shí)候,你會(huì)說“她有著大大的眼睛,烏溜溜的眼珠,亞麻色的長發(fā),月光般白皙的皮膚,高挺的鼻梁,櫻桃小嘴“等,其實(shí)你以這種方式描述的時(shí)候,就已經(jīng)將一個(gè)人眼睛,眼珠,頭發(fā),皮膚,鼻梁,嘴巴等幾個(gè)方面的信息抽象出來了,而每個(gè)人都有這些信息,這里的這些信息在結(jié)構(gòu)體中就相當(dāng)于它的成員變量。而這些信息都是包含在”人“這個(gè)標(biāo)簽中的,因此”人“這個(gè)標(biāo)簽就類似于結(jié)構(gòu)體中的結(jié)構(gòu)體標(biāo)簽。最后你描述的對(duì)象小麗,在這里就類似于具體的結(jié)構(gòu)體變量名,當(dāng)然你可以用同樣的信息去描述另一個(gè)人,比如小月。
言歸正傳,如何用結(jié)構(gòu)體變量來實(shí)現(xiàn)上述手機(jī)信息的描述呢?首先,我們先定義一個(gè)結(jié)構(gòu)體標(biāo)簽,接著用這個(gè)標(biāo)簽去定義四個(gè)具體手機(jī)的描述信息。這個(gè)結(jié)構(gòu)體標(biāo)簽里面應(yīng)該包含手機(jī)品牌,型號(hào),機(jī)身長度,機(jī)身寬度,機(jī)身厚度,屏幕尺寸,定價(jià)這七個(gè)成員變量。
這個(gè)結(jié)構(gòu)體標(biāo)簽可以寫成:
   
   
   struct Mobilephone
    {
    char *brand;
    char *model;
    float length;
    float width;
    float thickness;
    float screen_size;
    float price ;
    };
接著,使用這個(gè)結(jié)構(gòu)體標(biāo)簽分別去定義4個(gè)具體手機(jī)的描述信息,即定義四個(gè)結(jié)構(gòu)體變量。
   
   
   Mobilephone Pear13MiniInfo, Pear13Info, Pear13MaxInfo,Pear13MaxPlusInfo;
這些結(jié)構(gòu)體變量定義好了之后,我們就可以像使用普通變量一樣去使用他們了。使用的時(shí)候使用小數(shù)點(diǎn)“.“去獲取每個(gè)結(jié)構(gòu)體變量中的成員變量,如要對(duì)Pear13MiniInfo中的brand變量賦值時(shí),只需要使用Pear13MiniInfo. brand=”Pear”即可。因此上述的程序可以寫成如圖2所示。
C語言怎么定義一個(gè)結(jié)構(gòu)體



以上就是C語言怎么定義一個(gè)結(jié)構(gòu)體,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI