精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

結構體基本用法詳解

CHANBAEK ? 來源:博客園-lzh666 ? 作者:博客園-lzh666 ? 2023-02-15 14:52 ? 次閱讀

結構體詳解

結構體基本用法:

結構體就是把相同或者不同類型的便利放到一起,這和C++中的類很像,但沒有c++那么復雜,C語言中的結構體申明如下:

struct student           //結構體名
{
    char   name[10];     //姓名
    int    number;       //編號
    int    grade;        //成績
};

申明很簡單,其內存是按順序放置的。

下面需要注意的幾點:

1.申明時不能初始化(為什么后面會講)

2.申明只是申明一個結構體,是不能使用的

3.獲取結構體大小可以用sizeof(struct student)

4.結構體可以嵌套定義

5.結構體大小必須是所有成員變量大小的整數倍

一般我們會使用新定義類型來代替結構體,其實就是給結構體起一個新的名字

typedef  struct student
{
     char     name[10];
     int      number;
     int      grade;
}STU;

STU stu1={"張三",001,95};//定義一個stu1結構體變量,并進行初始化

注意:只有在定義的時候才能一起初始化,一旦定義了之后,不能一起初始化,但是可以分別初始化,為啥之后不能初始化,主要原因是因為結構體變量是按順序存儲的。

這樣STU表示的實際就是結構體,具體可以參考typedef用法。

結構體既然申明了那怎么使用了,這里我們必須定義一個結構體變量,注意是結構體變量,也就是定義一個變量,這里的變量的類型是結構體,因此結構體申明部分其實就是申明一個新的變量類型,因此結構體是一個類型,不是變量,所以這也就是為啥申明的時候里面不能進行初始化的原因。 下面舉個例子來使用結構體:

我們引用結構體是可以這樣引用:
stu1.name="李四";
stu1.number=002;
stu1.grade=100;
上面的引用方式是成員引用,也就是普通變量方式引用,還有一種引用就是結構體指針引用,這兩種引用的方式有很大不同,后面會講到。
指針引用時必須申明一個結構體指針,就像在整型變量中使用指針一樣,我們需要先定義一個整型指針變量,然后使用它,這里也是一樣。
STU  *stu2;   //定義一個stu2結構體指針變量

上面不能進行初始化,因為其實質是一個指針,不能像變量一樣可以一起初始化(當然,指針實質還是變量,但是其使用不一樣,所以一般說指針還是指指針變量)

既然是指針,那么必須指向一個內存地址,因此指針變量使用之前必須指向一塊特定的內存地址,結構體指針也不例外。 那我們怎樣初始化結構體指針呢

第一種方式用動態分配內存的方式:

stu2=(STU*)malloc(STU);

第二種方式使用結構體變量間接方式:

stu2=&stu1;

這樣結構體stu2指向的就是stu1的首地址。

結構體高級用法:

在函數中,如果參數是結構體,那么又該怎樣使用呢,其實我們使用結構體和使用變量是一樣的,定義如下

void swap(STU stu1,STU stu2)
{
   int exchange=0;
   exchange = stu1.grade;
   stu1.grade=stu2.grade;
   stu2.grade=exchange;
   /******
    ......
   ******/
}

這樣就可以使用結構體變量了,但是請思考下面代碼結果:

STU stu3={"王五",003,80};
swap(stu1,stu3);

執行這個函數兩個結構體中的grade會交換么? 結果是不會。 這里就和函數中講解的是一樣的,那么我們怎么才能將其交換呢,在普通函數中給的方法是使用指針,因此這里我們同樣可以使用指針來操作,我們必須將函數的形參定義為結構體指針變量。 如下:

STU swap(STU *stu1,STU *stu2)
{
    int exchange=0;
    exchange = stu1->grade;
    stu1->grade=stu2->grade;
    stu2->grade=exchange;

}

這樣我們使用

swap(&stu1,&stu3);

就可以將其調換位置了

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7601

    瀏覽量

    136251
  • C++
    C++
    +關注

    關注

    22

    文章

    2104

    瀏覽量

    73503
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28334
  • 結構體
    +關注

    關注

    1

    文章

    130

    瀏覽量

    10835
收藏 人收藏

    評論

    相關推薦

    C語言中結構struct的用法

    結構數組就是具有相同結構類型的變量集合,假如要定義一個班級40個同學 的姓名、性別、年齡和住址, 可以定義成一個結構數組。如下所示:
    的頭像 發表于 03-31 11:45 ?3570次閱讀

    結構使用方法

    雖然粉絲最后都理解了,但是仍想趁著這個機會整理一下結構用法,希望能夠對剛入行的童鞋們有所幫助。
    的頭像 發表于 09-28 15:43 ?1577次閱讀

    C語言結構(struct)用法詳解

    在實際的開發過程中,一組數據往往具有不同的數據類型,此時數組是不能夠滿足需求了。因為數組中各元素的類型必須是一致的。為了解決這個需求,C中給出了另一種數據類型-`結構`,每一個成員可以是任意一種數據類型。
    的頭像 發表于 02-21 10:14 ?2166次閱讀
    C語言<b class='flag-5'>結構</b><b class='flag-5'>體</b>(struct)<b class='flag-5'>用法</b>的<b class='flag-5'>詳解</b>

    C語言-結構對齊詳解

    `C語言-結構對齊詳解朱有鵬1、結構為何要對齊訪問訪問結構
    發表于 07-12 16:41

    如何定義結構

    什么是結構,如何定義結構? 溫馨提示: 請從以下鏈接中的帖子學習相關內容并進行回答,其他地方得到的答案不能作為標準答案,僅能做為補充說明,七天之內答案不可見,答題的童鞋有七天
    發表于 05-08 05:55

    一文詳解ADC的外圍功能與結構

    本文主要從ADC中用到的結構、函數以及用法進行講解
    發表于 01-25 07:05

    USART初始化結構詳解

    USART 初始化結構詳解標準庫函數對每個外設都建立了一個初始化結構,比如USART_InitTypeDef,
    發表于 02-22 06:08

    請教下有沒有好的用法可以將結構和easyflash結合進行使用?

    以往的FLASH存儲信息,是使用結構先進行分類,在通過flash寫入庫函數進行存儲,而且使用的范圍比較廣如果使用easyflash是進行鍵值的改動,改動的代碼量會比較大,請教下有沒有好的用法可以將
    發表于 02-13 14:41

    OrCAD中創建總線及用法詳解

    OrCAD中創建總線及用法詳解,如何創建總線,菜單place->bus或者右側快捷按鈕
    發表于 12-02 10:18 ?2.6w次閱讀

    c語言_結構和共同體

    這份PPT很全面講解了結構的各種用法,夠全面,對結構的各種應用也舉了例子,本人已驗證過的!另外也講解了共同體和枚舉,這兩部分描述較少。
    發表于 06-15 10:58 ?0次下載

    Typedef用法小結

    非常不錯的文檔有著基本數據類型結構enum與函數指針等等的Typedef相關用法.
    發表于 11-02 11:36 ?19次下載

    ADC0809用法詳解_引腳圖及功能_工作原理_內部結構及應用電路

    本文主要介紹了ADC0809用法詳解_引腳圖及功能_工作原理_內部結構及應用電路。ADC0809是采用CMOS工藝制造的雙列直插式單片8位A/D轉換器。A/D轉換后得到的數據應及時傳送給單片機進行處理。
    發表于 12-13 09:32 ?19.3w次閱讀
    ADC0809<b class='flag-5'>用法</b><b class='flag-5'>詳解</b>_引腳圖及功能_工作原理_內部<b class='flag-5'>結構</b>及應用電路

    XMEGA PWM模塊多通道的用法詳解

    本文主要詳解XMEGA PWM模塊多通道的用法,具體的跟隨小編來了解一下。
    的頭像 發表于 06-18 14:09 ?4294次閱讀
    XMEGA PWM模塊多通道的<b class='flag-5'>用法</b><b class='flag-5'>詳解</b>

    CMake用法詳解

    CMake用法詳解
    發表于 10-25 16:28 ?2次下載

    C語言結構(struct)用法詳解

    在實際的開發過程中,一組數據往往具有不同的數據類型,此時數組是不能夠滿足需求了。因為數組中各元素的類型必須是一致的。為了解決這個需求,C中給出了另一種數據類型-結構,每一個成員可以是任意一種數據類型。
    的頭像 發表于 11-15 16:11 ?1789次閱讀
    C語言<b class='flag-5'>結構</b><b class='flag-5'>體</b>(struct)<b class='flag-5'>用法</b><b class='flag-5'>詳解</b>