国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

經典 C 語言編程,結構體和聯合體如何共用?

哈哈hfgfdf ? 來源:嵌入式學習資料 ? 作者:嵌入式學習資料 ? 2024-01-11 18:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

結構體

結構體占用的內存大小,首先和編譯器的系統位數有關系,類似于CPU是 64 bits 還是 32 bits 的情形;其次,結構體需要考慮字節對齊的問題。

實際上占用的內存大小, 在 Linux 中可以 使用 sizeof 進行獲取,默認為字節對齊的大小。

聯合體

聯合體的參數共享同一個內存地址,所占的內存大小完全是由聯合體中參數類型決定字長,然后數據共享,內存共享等。

結構體和聯合體連用例子:

1、首先定義一個結構體,內部包含聯合體,如下;

#defineMAX_SOFTKEY_LEN4

typedefenum
{
ENUM_TRANSFER,
ENUM_CONFERENCE,
ENUM_ANSWER,
ENUM_HOLD,
}KeyType;

typedefstructtag_CallRecordInfo
{
charline;//currentrecordingline.
unsignedcharstate;//currentmachinestate.
unsignedshorttotal;//currenttotalusedlines.
KeyTypetype;
union
{
charTransferkey[MAX_SOFTKEY_LEN];//transferkeybuffer
charConferencekey[MAX_SOFTKEY_LEN];//conferencekeybuffer
charAnswerKey[MAX_SOFTKEY_LEN];//talkingkeybuffer
charHoldKey[MAX_SOFTKEY_LEN];//holdkeybuffer
}SoftKey;

}CallRecordInfo;

解釋如下結構體:

聯合體union表示公用一個4字節的內存,并且定義了一個聯合體變量SoftKey,這個
聯合體最大的好處就是在賦值或者清空時能夠直觀地清楚,不需要再引用聯
合體的參數。如:
CallRecordInfoinfo;
對 info.SoftKey 的操作會影響聯合體內部參數的值,并且數值一致。也
就是說,我們只要對info.SoftKey進行賦值即可,然后聯合體內的參
數內容是一樣的。即:
info.SoftKey=info.SoftKey.TransferKey.

2、結構體占用的內存大小 (作者的機器為 Ubuntu 18.04, sizeof(int) = 4 的機器)

a5a24e68-a9d0-11ee-9b10-92fbcf53809c.png

3、整體代碼

#include
#include
#include

#defineMAX_SOFTKEY_LEN4

typedefenum
{
ENUM_TRANSFER,
ENUM_CONFERENCE,
ENUM_ANSWER,
ENUM_HOLD,
}KeyType;

typedefstructtag_CallRecordInfo
{
charline;//currentrecordingline.
unsignedcharstate;//currentmachinestate.
unsignedshorttotal;//currenttotalusedlines.
KeyTypetype;


union
{
charTransferkey[MAX_SOFTKEY_LEN];//transferkeybuffer
charConferencekey[MAX_SOFTKEY_LEN];//conferencekeybuffer
charAnswerKey[MAX_SOFTKEY_LEN];//talkingkeybuffer
charHoldKey[MAX_SOFTKEY_LEN];//holdkeybuffer
}SoftKey;

}CallRecordInfo;

CallRecordInfoRecordInfo;

voidSetSoftKeyValue(intstate,KeyTypetype,char*keybuf)
{

RecordInfo.state=state;
RecordInfo.type=type;
memset(&RecordInfo.SoftKey,0,MAX_SOFTKEY_LEN);

if(NULL!=keybuf)
{
memcpy(&RecordInfo.SoftKey,keybuf,MAX_SOFTKEY_LEN);
}
}

intmain(intargc,charconst*argv[])
{

charbuf[4]="123";

SetSoftKeyValue(0,ENUM_TRANSFER,buf);

printf("n%s---%lun",RecordInfo.SoftKey.Conferencekey,sizeof(CallRecordInfo));
return0;
}

4、結果

a5a9f38e-a9d0-11ee-9b10-92fbcf53809c.png

原文:https://blog.csdn.net/psr1999

文章來源于網絡,版權歸原作者所有,如有侵權,請聯系刪除。

審核編輯 黃宇

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

    關注

    1

    文章

    131

    瀏覽量

    11371
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    嵌入式開發中一些少用的C語言用法分享

    化的電子產品開發系統。 2、#pragma anon_unions 支持匿名結構/聯合體匿名結構/
    發表于 01-05 08:19

    C語言主要特點

    。 3.數據類型豐富。C語言提供的數據類型包括整形、浮點型、字符型、數組類型、指針類型、結構類型和共用
    發表于 01-05 07:41

    10個例子代碼,C語言結構的高級

    當涉及到C語言結構的高級**時,有很多有趣和強大的技巧可以應用。下面是10個例子代碼,每個例子都使用了不同的高級結構
    發表于 01-05 06:32

    一個經典結構聯合體共用的實例

    Linux 中可以 使用 sizeof 進行獲取,默認為字節對齊的大小。 聯合體 聯合體的參數共享同一個內存地址,所占的內存大小完全是由聯合體中參數類型決定字長,然后數據共享,內存共享等。
    發表于 12-16 07:14

    浙江省腦機接口重大科技專項與創新聯合體將開啟,相關腦機接口立項國際標準啟動

    來源:維度網-全球簡訊 ? 2025“智聯·未來”腦機接口國際會議暨第二屆中國腦機智能大會將于12月11日至12日舉行。會上,將舉行浙江省腦機接口重大科技專項與創新聯合體啟動儀式。 啟動浙江省腦機
    的頭像 發表于 12-11 16:40 ?653次閱讀

    共用聲明

    共用也稱聯合體。 和結構還是有點像: union 共用
    發表于 12-05 07:24

    中科曙光入選首批天津市卓越工程師培養聯合體成員單位

    11月23日,天津市卓越工程師培養聯合體成立儀式暨天津大學國家卓越工程師學院高質量建設發展會議在天津大學北洋園校區隆重舉行。中科曙光作為聯合體首批成員單位受邀出席,總裁助理楊鴻軒代表企業參會,與政府、高校及產業界代表共同見證聯合體
    的頭像 發表于 11-28 16:42 ?690次閱讀

    C語言編程技巧

    一個成員是一個未知大小的數組,適用于動態分配內存并關聯一個可變長度的數組。? ?3、匿名結構聯合體?:C語言允許在
    發表于 11-27 06:46

    單片機啟動&庫函數的構成

    ,由C語言聯合體結構的特性,內部的地址是基地址累加的,只需要一個寄存器累加固定的偏移量,就能把結構
    發表于 11-18 08:15

    C語言結構使用

    型的數據組合。 結構的聲明與定義 結構的聲明一般形式為: c struct 結構
    發表于 11-12 08:30

    開鴻智谷加入創新聯合體,共推先進制造業與人力資源服務融合發展

    為深入貫徹人才強國與制造強國戰略,助力構建現代化產業體系,湖南湘江新區正式啟動“人力資源服務助力先進制造業高質量發展創新聯合體”(以下簡稱“創新聯合體”)建設工作,并于11月1日在長沙人力資源服務
    的頭像 發表于 11-03 17:21 ?1267次閱讀
    開鴻智谷加入創新<b class='flag-5'>聯合體</b>,共推先進制造業與人力資源服務融合發展

    C語言結構聯合體的深度解析:內存布局與應用場景

    在于對內存的極致操控。結構構建數據實體,聯合體實現內存復用,二者的組合使用能創造出強大的數據結構。掌握它們的底層原理,配合內存分析工具(如Valgrind、GDB),將助你在嵌入式開
    發表于 04-08 09:18

    長沙新一代信息技術產教聯合體正式成立,拓維信息當選理事長單位

    3月22日,“長沙新一代信息技術產教聯合體成立大會暨第一屆理事會議”在湖南商務職業技術學院隆重啟幕。會上,長沙新一代信息技術產教聯合體正式成立,拓維信息當選理事長單位,拓維信息旗下開鴻智谷當選
    的頭像 發表于 03-26 17:48 ?1029次閱讀
    長沙新一代信息技術產教<b class='flag-5'>聯合體</b>正式成立,拓維信息當選理事長單位

    產教新篇|長沙新一代信息技術產教聯合體揚帆啟航!

    在深化現代教育體系建設的主軸推動下,我國職業教育正以市域產教聯合體和行業產教融合共同體為雙翼,構建起教育鏈、人才鏈與產業鏈、創新鏈深度融合的新格局。2025年3月22日,“長沙新一代信息技術產教
    的頭像 發表于 03-24 18:09 ?924次閱讀
    產教新篇|長沙新一代信息技術產教<b class='flag-5'>聯合體</b>揚帆啟航!

    全套C語言培訓資料—PPT課件

    共用、位運算、文件 全套C語言培訓資料,共427頁,13個章節:C語言概述、程序的靈魂—算
    發表于 03-12 14:50