位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 結(jié)構(gòu)體類型的定義

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-02

    結(jié)構(gòu)體類型與前面所講過的整型int、浮點(diǎn)型float—樣是一個(gè)數(shù)據(jù)類型,但是結(jié)構(gòu)體類型需要程序員根據(jù)自己的要求先定義,一旦一個(gè)結(jié)構(gòu)體類型定義好,可以用它來定義結(jié)構(gòu)體變量。定義結(jié)構(gòu)體類型的過程實(shí)際上相當(dāng)于對上述學(xué)生信息表確定標(biāo)題行的過程,所以結(jié)構(gòu)體類型實(shí)際上是一個(gè)模板。

結(jié)構(gòu)體類型的定義形式如下:

struct結(jié)構(gòu)體名]

{

    類型標(biāo)識符結(jié)構(gòu)體成員名1 ; 

    類型標(biāo)識符結(jié)構(gòu)體成員名2 ;

    …

    類型標(biāo)識符結(jié)構(gòu)體成員名n ;

};

例如,定義學(xué)生結(jié)構(gòu)體的定義如下:

struct student 

{

    int sno;              /*學(xué)號*/

    char snarae[10];      /*姓名*/

    int sage;             /*年齡*/

    char depmt [20];      /*專業(yè)*/

    float cscore;         /*成績*/

};


關(guān)于結(jié)構(gòu)體類型的聲明,有幾點(diǎn)需要說明:

①結(jié)構(gòu)體名:結(jié)構(gòu)體類型的標(biāo)識是一個(gè)合法的標(biāo)識符,例如上面的student就是結(jié)構(gòu)體名,有時(shí)也稱之為結(jié)構(gòu)體標(biāo)記。

②結(jié)構(gòu)體成員:結(jié)構(gòu)體的每一個(gè)成員代表了結(jié)構(gòu)體的一個(gè)分量,可以將每一個(gè)結(jié)構(gòu)體成員稱為結(jié)構(gòu)體中的域。結(jié)構(gòu)體成員名的形式和定義普通變量相同,結(jié)構(gòu)體成員可以是一個(gè)簡單類型,也可以是一個(gè)構(gòu)造類型,如結(jié)構(gòu)體、數(shù)組等。

③結(jié)構(gòu)體成員的定義方法與定義變量相同,其形式為:

    類型標(biāo)識符成員名;

④成員名的命名遵循標(biāo)識符的命名規(guī)則。

⑤一個(gè)結(jié)構(gòu)體的成員也可以是另一個(gè)已經(jīng)定義好的結(jié)構(gòu)體類型。

例如:定義一個(gè)設(shè)備結(jié)構(gòu)體,包括以下信息:設(shè)備編號、設(shè)備名稱、設(shè)備購進(jìn)日期、設(shè)備價(jià)格。

因?yàn)镃語言中沒有日期型數(shù)據(jù)類型,所以日期型也可以定義成一個(gè)結(jié)構(gòu)體的形式:

struct device

{

    int d_no;

    char d_name[20];

    struct date d_date;        /*用日期結(jié)構(gòu)體類型定義成員*/

    float s_price;

};

可以看到,device結(jié)構(gòu)體中的d_date;是用date結(jié)構(gòu)體類型定義的。而date結(jié)構(gòu)體類型應(yīng)該已經(jīng)在之前定義好:

struct date 

{

    int year;

    int month;

    int day;

};

⑥結(jié)構(gòu)體類型的定義中,成員可以像上面一樣每行寫一個(gè)成員的定義,也可以將多個(gè)成員的定義寫在一行。例如,上述student的定義可寫成:

struct student

{

    int sno; char sname[10];  int sage; char depmt[20]; float cscore;

};

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部