0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言如何定義結(jié)構(gòu)體類型變量

jf_78858299 ? 來源:C語言 ? 作者:閆小林 ? 2023-03-10 15:35 ? 次閱讀

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

C語言中允許用戶自己建立由不同類型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu),它稱為結(jié)構(gòu)體。在其他一些高級語言中稱“記錄”。

一般形式

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

結(jié)構(gòu)體類型的名字是由一個關(guān)鍵字struct和結(jié)構(gòu)體名組成而成的,結(jié)構(gòu)體名是用戶指定的,又稱“結(jié)構(gòu)體標(biāo)記”,以區(qū)別于其他結(jié)構(gòu)體類型。

花括號內(nèi)是該結(jié)構(gòu)體所包括的子項(xiàng),稱為結(jié)構(gòu)體的成員,對各個成員都應(yīng)該進(jìn)行類型聲明。



類型名 成員名

成員表列也稱為域表,每一個成員是結(jié)構(gòu)體中的一個域,成員命名規(guī)則與變量名相同。

C語言如何定義結(jié)構(gòu)體類型變量

先聲明結(jié)構(gòu)體類型,再定義該類型的變量

  • 在定義了結(jié)構(gòu)體變量后,系統(tǒng)會為之分配內(nèi)存單元。根據(jù)結(jié)構(gòu)體類型中包含的成員情況,在Visual C++中占63個字節(jié)。
  • 這種聲明方式是聲明類型和定義變量分離,在聲明類型后可以隨時定義變量,比較靈活。

在聲明類型的同時定義變量

  • 一般形式

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

成員表列
}變量名表列;

  • 聲明類型和定義變量放在一起進(jìn)行,能直接看到結(jié)構(gòu)體的結(jié)構(gòu),比較直觀。
  • 在寫小程序時用此方式比較方便,但寫大程序時,往往要求對類型的聲明和對變量的定義分別放在不同的地方 ,以使程序結(jié)構(gòu)清晰,便于維護(hù)。

不指定類型名而直接定義結(jié)構(gòu)體類型變量

  • 一般形式

struct
{

成員表列
}變量名表列;

  • 指定了一個無名的結(jié)構(gòu)體類型,它沒有名字。

    顯然不能再以此結(jié)構(gòu)體類型去定義其他變量。

結(jié)構(gòu)體類型與結(jié)構(gòu)體變量是不同的概念,不要混同,只能對變量賦值、存取或運(yùn)算,而不能對一個類型賦值、存取或運(yùn)算。

結(jié)構(gòu)體類型中的成員名可以與程序中的變量名相同,但二者不代表同一對象,對結(jié)構(gòu)體變量中的成員,可以單獨(dú)使用,它的作用與地位相當(dāng)于普通變量。

C語言結(jié)構(gòu)體變量的初始化和引用

在定義結(jié)構(gòu)體變量時可以對它的成員初始化,初始化列表是用花括號括起來的的一些常量,這些常量依次賦給結(jié)構(gòu)體變量中的各成員。

可以引用結(jié)構(gòu)體變量中成員的值,引用方式為:

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

“.”是成員運(yùn)算符,它在所有的運(yùn)算符中優(yōu)先級最高,如果成員本身又屬于一個結(jié)構(gòu)體類型,則要用若干個成員運(yùn)算符,一級一級地找到最低的一級的成員。

對結(jié)構(gòu)體變量的成員可以像普通變量一樣進(jìn)行各種運(yùn)算,同類的結(jié)構(gòu)體變量可以互相賦值。

可以引用結(jié)構(gòu)體變量的成員的地址,也可以引用結(jié)構(gòu)體變量的地址,結(jié)構(gòu)體變量的地址主要用作函數(shù)參數(shù),傳遞結(jié)構(gòu)體變量的地址。

C語言結(jié)構(gòu)體變量案例

#include
int main()
{
struct Student{ //定義學(xué)生類結(jié)構(gòu)體
int stuId=10;//學(xué)號
char sex='F';//性別
}stu1;
printf("%d\\n",stu1.stuId);//輸出學(xué)號
printf("%c\\n",stu1.sex);//輸出性別
return 0;
}

編譯運(yùn)行結(jié)果:

10
F

--------------------------------
Process exited after2.405 secondswith return value0
請按任意鍵繼續(xù). . .
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135543
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2090

    瀏覽量

    73404
  • 結(jié)構(gòu)體
    +關(guān)注

    關(guān)注

    1

    文章

    127

    瀏覽量

    10812
收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式中C語言結(jié)構(gòu)基本實(shí)現(xiàn)

    C語言中的數(shù)組只能允許程序員定義存儲相同類型數(shù)據(jù)。但是結(jié)構(gòu)C
    的頭像 發(fā)表于 05-11 08:49 ?845次閱讀
    嵌入式中<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>基本實(shí)現(xiàn)

    漫談C語言結(jié)構(gòu)

    我放在下面?! ≡诖?,我會圍繞以下2個問題來分析和應(yīng)用C語言結(jié)構(gòu):  1. C語言中的
    發(fā)表于 11-15 15:59

    【干貨】c語言基礎(chǔ)語法——結(jié)構(gòu)

    1、關(guān)于C語言結(jié)構(gòu)的引入在實(shí)際問題中有時候我們需要幾種數(shù)據(jù)類型一起來修飾某個變量。例如一個學(xué)生
    發(fā)表于 06-03 17:10

    C語言用typedef關(guān)鍵字定義結(jié)構(gòu)類型

    本帖最后由 為了讓生活美好 于 2019-9-12 15:05 編輯 #include #include #include #include /* 結(jié)構(gòu)類型定義 */typed
    發(fā)表于 09-11 23:00

    單片機(jī)C語言 -- 基于結(jié)構(gòu)的面向?qū)ο缶幊碳记?/a>

    :系統(tǒng)初始化后,進(jìn)入主循環(huán),通過結(jié)構(gòu)調(diào)用system文件的函數(shù)。2、結(jié)構(gòu)類型定義
    發(fā)表于 02-04 21:48

    結(jié)構(gòu)類型定義的一般格式

    它是將若干個不同類型的數(shù)據(jù)變量有序地組合在一起而形成的一種數(shù)據(jù)集合體。一般來說,結(jié)構(gòu)中各個變量
    發(fā)表于 12-08 07:13

    結(jié)構(gòu)變量定義與使用變量訪問結(jié)構(gòu)成員

    知識點(diǎn)回顧關(guān)于找最大公共子串的兩種解題方法結(jié)構(gòu)定義(3種)結(jié)構(gòu)變量
    發(fā)表于 12-17 07:10

    C語言入門教程-指向結(jié)構(gòu)的指針

    指向結(jié)構(gòu)的指針 在C語言中幾乎可以創(chuàng)建指向任何類型的指針,包括用戶自定義
    發(fā)表于 07-29 12:04 ?3136次閱讀

    結(jié)構(gòu)定義、初始化和賦值

    結(jié)構(gòu)(struct)是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合,叫做結(jié)構(gòu)。 在C
    發(fā)表于 11-20 09:29 ?5.4w次閱讀

    C語言基礎(chǔ)語法之結(jié)構(gòu)

    C語言中數(shù)組允許定義可存儲相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)C
    的頭像 發(fā)表于 11-08 08:35 ?3588次閱讀

    C語言結(jié)構(gòu)的聲明與定義

    我們剛剛申請了一個名叫Info的結(jié)構(gòu)類型,那么理論上我們可以像聲明其他變量的操作一樣,去聲明我們的結(jié)構(gòu)體操作,但是
    的頭像 發(fā)表于 07-09 09:06 ?7333次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>之<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>的聲明與<b class='flag-5'>定義</b>

    51單片機(jī)實(shí)戰(zhàn)教程之C語言基礎(chǔ)(四 C語言變量定義

    C語言中的特殊數(shù)據(jù)類型包含:結(jié)構(gòu)、枚舉、公用(聯(lián)合)、數(shù)組、指針。特殊數(shù)據(jù)
    發(fā)表于 11-21 09:06 ?7次下載
    51單片機(jī)實(shí)戰(zhàn)教程之<b class='flag-5'>C</b><b class='flag-5'>語言</b>基礎(chǔ)(四 <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>變量</b><b class='flag-5'>定義</b>)

    C語言入門之結(jié)構(gòu)指針

    C語言中,指向結(jié)構(gòu)對象的指針變量既可以指向結(jié)構(gòu)
    的頭像 發(fā)表于 03-24 14:59 ?960次閱讀

    C語言結(jié)構(gòu)完全筆記

    我們剛剛申請了一個名叫Info的結(jié)構(gòu)類型,那么理論上我們可以像聲明其他變量的操作一樣,去聲明我們的結(jié)構(gòu)體操作,但是
    的頭像 發(fā)表于 08-01 16:52 ?535次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>完全筆記

    結(jié)構(gòu)與指針的關(guān)系

    C語言中,結(jié)構(gòu)(Struct)是一種用戶自定義的數(shù)據(jù)類型,它允許您將不同
    的頭像 發(fā)表于 01-11 08:00 ?861次閱讀
    <b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>與指針的關(guān)系