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

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

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

3天內不再提示

結構體成員變量的引用方法123

冬至子 ? 來源:小李的創客實驗室 ? 作者:初出茅廬的小李 ? 2023-07-08 14:45 ? 次閱讀

第一種方式“.”引用

第一步:先定義一個結構體

#pragma pack(1) /*1字節對齊*/
typedef struct 
{
  char xuehao[20];      //學號
  char xingming[20];    //姓名
  float fenshu;         //分數
  int age;              //年齡
}student_t;
#pragma pack()/*還原默認對齊*/

這里采用的是常用的typedef關鍵字進行定義結構體類型,可以看到student_t這種數據類型里面有4個成員變量,分別是學號、姓名、分數、年齡,這些成員變量既然是變量就應該滿足變量的基本特征,也就是說可以被賦值,可以被引用,下面直接看代碼

student_t  stu1, stu2;  //此時stu1,stu2為student_t結構體類型的變量
  
  strcpy(stu1.xingming, "初出茅廬的小李");//數組變量賦值字符串操作
  strcpy(stu1.xuehao, "10086");          //數組變量賦值字符串操作
  stu1.fenshu = 99.0;                    //浮點數賦值操作
  stu1.age = 10;                         //整形數賦值操作


  strcpy(stu2.xingming, "張三");
  strcpy(stu2.xuehao, "10010");
  stu2.fenshu = 89.5;
  stu2.age = 12;
  //左滑可以查看全部

這里可以看到stu1結構體和stu2結構體的4個成員分別被引用了 引用的格式是:結構體變量名.結構體成員名

第二步:打印觀察賦值效果

代碼如下:

printf("\\r\\n\\r\\n**********小李的創客實驗室**********\\r\\n\\r\\n");
  printf("====================================\\r\\n");
  printf("stu1的姓名是:%s\\r\\n", stu1.xingming);
  printf("stu1的學號是:%s\\r\\n", stu1.xuehao);
  printf("stu1的年齡是:%d\\r\\n", stu1.age);
  printf("stu1的分數是:%f\\r\\n", stu1.fenshu);
  printf("====================================\\r\\n");
  printf("stu2的姓名是:%s\\r\\n", stu2.xingming);
  printf("stu2的學號是:%s\\r\\n", stu2.xuehao);
  printf("stu2的年齡是:%d\\r\\n", stu2.age);
  printf("stu2的分數是:%f\\r\\n", stu2.fenshu);
  printf("====================================\\r\\n");
  //左滑可以查看全部

輸出結果如下:

圖片

第二種方式“->”引用

下面來看第二種常用的引用方法,這種方法經常用做結構體傳參的場合,很多參數需要傳遞的時候,比如在STM32配置串口波特率、停止位、數據位、校驗位、這些參數的時候就會應用到,比較方便只需要一個結構體指針變量就可以訪問結構體的各個成員變量,下面直接來看實例

代碼如下:

void printf_stu(student_t *stu) 
{
  printf("stu的姓名是:%s\\r\\n", stu- >xingming);
  printf("stu的學號是:%s\\r\\n", stu- >xuehao);
  printf("stu的年齡是:%d\\r\\n", stu- >age);
  printf("stu的分數是:%f\\r\\n", stu- >fenshu);
}
//左滑可以查看全部

這是一個自定義的打印函數,參數是student_t類型的指針,也就是結構體變量的一個地址,調用如下

printf("====================================\\r\\n");
    printf_stu(&stu1);
    printf("====================================\\r\\n");
    printf_stu(&stu2);
//左滑可以查看全部

觀察實驗現象

圖片

可以看出,通過傳入函數不同的參數,就可以得到不同的輸出這在很多配置參數的場合就顯得非常重要

舉例說明:

圖片

配置C端口參數就是傳入這樣一個結構體變量的地址

第三種方式引用

其實這種方式我感覺不常用,但是有助于理解指針變量的真實含義就是指針變量取內容的操作,取內容取地址是跟指針緊密相關的知識點這里簡單說一下,以后有時間我們再來詳細探討這里面的細節。

void printf_stu(student_t *stu) 
{
  printf("stu的姓名是:%s\\r\\n", stu- >xingming);
  printf("stu的學號是:%s\\r\\n", stu- >xuehao);
  printf("stu的年齡是:%d\\r\\n", stu- >age);
  printf("stu的分數是:%f\\r\\n", stu- >fenshu);
}
printf_stu(&stu1);
void printf_stu2(student_t *stu) 
{
  printf("stu的姓名是:%s\\r\\n", (*stu).xingming);
  printf("stu的學號是:%s\\r\\n", (*stu).xuehao);
  printf("stu的年齡是:%d\\r\\n", (*stu).age);
  printf("stu的分數是:%f\\r\\n", (*stu).fenshu);
}


//左滑可以查看全部

圖片

通過以上對比實驗大家可以發現,其實兩種寫法輸出效果是一樣的,這就說明了取內容取地址是互逆的操作。

總結:不管那一種引用方式都是為了應用、各種方式都有自己的特點,根據應用場景靈活運用才是正道,至于第二種和第三種的區別我個人感覺不大,其實我用的最多的還是第一種哈~

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

    關注

    2258

    文章

    10828

    瀏覽量

    352499
  • C語言
    +關注

    關注

    180

    文章

    7575

    瀏覽量

    134122
收藏 人收藏

    評論

    相關推薦

    用C語言的結構實現字節、位操作

    。那么這個應用例將向您介紹一些SPMC75F2413A普遍使用的編程方法。使用結構、聯合定義位段實現位和字節的操作。1.2 基本概念結構結構是用同一個名字
    發表于 09-21 09:25

    C語言結構(struct)常見使用方法

    定義其他同結構變量了——至少我現在沒掌握這種方法結構
    發表于 08-23 18:18

    ccs程序在結構后面打上點(.)后結構成員不出現

    在編譯器中定義的結構,在結構后面打上點(.)后,結構
    發表于 09-29 15:05

    Keil5里結構變量成員名自動補全功能不能用了

    Keil5里結構變量成員名自動補全功能不能用了,結構后按。沒有成員名自動出現的功能了,不知道
    發表于 10-18 08:53

    漫談C語言結構

    ,若發現不足之處懇請指出。代碼文件test.c我放在下面。(2)以修改結構成員變量方法代替了函數(入口參數)的重新定義。  如果說
    發表于 11-15 15:59

    【干貨】c語言基礎語法——結構

    輸入和輸出;在輸入輸出結構數據時,必須分別指明結構變量的各成員;-總結;除開“相同類型的
    發表于 06-03 17:10

    如何利用C語言取結構成員變量的地址?

    C語言,如何取結構成員變量的地址?發個列程好嗎?我好研究一下
    發表于 11-04 03:31

    C語言結構的區別

    結構在使用其某成員變量時用:結構名.結構
    發表于 03-24 03:27

    結構變量的定義與使用變量訪問結構成員

    知識點回顧關于找最大公共子串的兩種解題方法結構的定義(3種)結構變量的定義與使用
    發表于 12-17 07:10

    測試結構成員內存對齊的方式方法

    //測試環境:keil for ARM//測試目的:通過keil仿真,介紹結構成員對齊方式 #pragma pack ()//定義一個聯合體類型 struct stru {int a;long b
    發表于 12-21 07:37

    簡單分析linux內核中的結構使用方法

    結構的使用并不熟練,導致在linux開發中一頭霧水。下面簡單分析結構的使用方法。1:結構
    發表于 01-19 08:26

    C語言中的結構指針在訪問的時候怎么讀取成員變量的數據?

    C語言中的結構指針在訪問的時候怎么讀取成員變量的數據
    發表于 10-10 07:07

    求助,結構變量定義引用問題求解

    |= mask; } 如以上語句,GPIO_Type是個結構定義,定義了一個*base變量,在引用其中的成員時,是base->I
    發表于 10-27 06:06

    C語言如何定義結構類型變量

    在定義了結構變量后,系統會為之分配內存單元。根據結構類型中包含的成員情況,在Visual C
    的頭像 發表于 03-10 15:35 ?1080次閱讀

    結構成員變量引用方法

    這里默認大家是了解結構這種數據類型的,如果不了解可以參考往期相關文章,好了下面開始這次的內容分享
    發表于 06-23 17:52 ?4396次閱讀
    <b class='flag-5'>結構</b><b class='flag-5'>體</b><b class='flag-5'>成員</b><b class='flag-5'>變量</b>的<b class='flag-5'>引用</b><b class='flag-5'>方法</b>