色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

你是否真的了解結構體占用了多少字節?

信盈達 ? 2024-06-04 08:04 ? 次閱讀

結構體成員所占內存空間大小

fd536da6-2205-11ef-bd4a-92fbcf53809c.png

一般情況下,如果想知道結構體成員的內存占用情況需要:

1、先用結構體在內存中開空間

2、使用sizeof(結構體變量.成員名)或者sizeof(結構體指針->成員名)的形式獲取成員在內存中所占空間大小,舉例如下:

#include#include
typedef struct{ int id; char ch;}data;
int main(){ data a; // 結構體變量 data *p = (data *)malloc(sizeof(data));
// 結構體變量用點語法 printf("方式一:成員id大小:%d,ch大小:%d\n", sizeof(a.id),sizeof(a.ch));
// 結構體指針用 -> printf("方式二:成員id大小:%d,ch大小:%d\n", sizeof(p->id),sizeof(p->ch));
return 0;}

此方法需要在內存中開辟空間。

fd56d5c2-2205-11ef-bd4a-92fbcf53809c.png

在閱讀源碼的時候偶然發現了一種非常妙的寫法:可以將結構體指針強制指向地址為0的區域,然后直接用sizeof訪問成員。

printf("方法三:成員id大小:%d,ch大小:%d\n", sizeof(((data *)0)->id),sizeof(((data *)0)->ch));

地址為0的區域為保留區,程序運行時并不會真正在內存中開空間,這里可以理解為借用了0值。

為了通用,可以將這種方法進行宏定義:

#define size_of_attribute(Struct, Attribute) sizeof(((Struct*)0)->Attribute)

Struct --- 結構體類型名字

Attribute--- 結構體成員名測試代碼如下,你也快去試一下吧!

#include#include
#define size_of_attribute(Struct, Attribute) sizeof(((Struct*)0)->Attribute)
typedef struct{ int id; char ch;}data;
typedef struct{ double d; short m;}data2;
int main(){ printf("%d\n",size_of_attribute(data,ch)); printf("%d\n",size_of_attribute(data2,d)); return 0;}

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

    關注

    8

    文章

    3028

    瀏覽量

    74076
  • 源碼
    +關注

    關注

    8

    文章

    642

    瀏覽量

    29226
  • 結構體
    +關注

    關注

    1

    文章

    130

    瀏覽量

    10847
收藏 人收藏

    評論

    相關推薦

    結構成員的順序會影響結構的大小嗎

    相同的結構成員,如果把順序調整一下,會不會影響結構的大小? 答案是會的,這主要跟字節對齊有關。 比如這樣的
    的頭像 發表于 11-25 16:24 ?179次閱讀

    深度了解SiC的晶體結構

    SiC是由硅(Si)和碳(C)按1:1的化學計量比組成的晶體,因其內部結構堆積順序的不同,形成不同的SiC多型,本篇章帶你了解SiC的晶體結構及其可能存在的晶體缺陷。
    的頭像 發表于 11-14 14:57 ?700次閱讀
    深度<b class='flag-5'>了解</b>SiC的晶體<b class='flag-5'>結構</b>

    字節豆包推出AI智能耳機

    字節跳動旗下豆包品牌近日推出了其首款AI智能耳機——Ola Friend。這款耳機采用了開放式設計,單耳重量僅為6.6克,佩戴舒適輕盈。
    的頭像 發表于 10-10 16:55 ?532次閱讀

    認識貼片電阻嗎,對他了解多少?

    認識貼片電阻嗎,對他了解多少?
    的頭像 發表于 08-27 15:49 ?480次閱讀
    <b class='flag-5'>你</b>認識貼片電阻嗎,<b class='flag-5'>你</b>對他<b class='flag-5'>了解</b>多少?

    【GD32 MCU 入門教程】六、GD32 MCU 選項字節設置及解除方法

    您在使用GD32過程中是否遇到過芯片反復復位,代碼無法更新,代碼一直執行在0x1fffxxxx區域,或代碼執行在SRAM區域的情況?如果有遇到這類現象是否找到原因呢?如果沒找到是否檢查過選項
    的頭像 發表于 08-26 09:43 ?629次閱讀
    【GD32 MCU 入門教程】六、GD32 MCU 選項<b class='flag-5'>字節</b>設置及解除方法

    知道一成型電感多少錢嗎

    知道一成型電感多少錢嗎 gujing 編輯:谷景電子 一成型電感是電子電路中特別重要的一種零件,大家在選擇一成型電感的時候都會比較重視它的價格!一
    的頭像 發表于 07-06 10:46 ?980次閱讀

    真的了解駐波比嗎?到底什么是電壓駐波比?

    真的了解駐波比嗎?到底什么是電壓駐波比?在很長一段時間內,小編對駐波比的了解僅限于這樣一個概念:它是一個用于描述波反射大小的物理量,取值范圍[1, ∞],值越小,就表示反射越小,值越
    的頭像 發表于 05-29 14:27 ?4094次閱讀
    <b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>了解</b>駐波比嗎?到底什么是電壓駐波比?

    用FreeRTOS使用隊列怎么發送一個結構呢?

    怎么使用隊列,發送一個12個字節結構呢? osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec
    發表于 04-17 07:35

    C語言結構史上最詳細的講解【軟件干貨】

    struct結構數據類型 前言 我們知道,在C語言中有一些基本的數據類型,如?char?int?float?long?double?string(c99) 等等數據類型,他們可以表示一些事物
    的頭像 發表于 03-28 17:52 ?773次閱讀

    PSOC4的PWM輸出占用的IO引腳是否可以做普通GPIO口嗎?

    PSOC4在設置開啟PWM模塊應用占用某個IO引腳輸出,一段時間后,由于不需要PWM功能,計劃關掉PWM模塊,讓該占用的IO口做普通GPIO使用,是否可以實現?怎么實現?
    發表于 02-05 08:25

    MCAL的DMA如何使得變量存儲由編譯器自動分配 ?

    (DMA_START_SEC_CONFIG_DATA_ASIL_B_CORE0_256),但是Dma_kChannel_40_TcsConfigRoot結構實際只占用16個字節,請問
    發表于 02-02 08:33

    求助,請問一個結構如何全部定義到 __attribute__ 區域?

    請問一個結構如何全部定義到 __attribute__ 區域? 例如我這里涉及到一些高速計算的緩存,計劃將緩存數據存儲到 __attribute__ 區域。 三個結構 ,每個
    發表于 01-16 07:29

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

    結構 結構占用的內存大小,首先和編譯器的系統位數有關系,類似于CPU是 64 bits 還是 32 bits 的情形;其次,
    的頭像 發表于 01-11 18:24 ?1391次閱讀
    經典 C 語言編程,<b class='flag-5'>結構</b><b class='flag-5'>體</b>和聯合體如何共用?

    結構與指針的關系

    在C語言中,結構(Struct)是一種用戶自定義的數據類型,它允許您將不同類型的數據項組合在一起,以便形成一個更復雜的數據結構結構可以
    的頭像 發表于 01-11 08:00 ?1005次閱讀
    <b class='flag-5'>結構</b><b class='flag-5'>體</b>與指針的關系

    keil arm工程中結構1字節對齊如何實現

    在Keil Arm工程中,結構的對齊方式可以通過使用特定的編譯器指令或者關鍵字來實現。結構的對齊方式會直接影響結構
    的頭像 發表于 01-05 14:40 ?3833次閱讀
    主站蜘蛛池模板: 免费在线视频a| 最近2019中文字幕MV免费看 | 亚洲精品第五页中文字幕| 美女扒开尿口直播| 国产精品A久久777777| 99国产在线视频| 亚洲人成色777777老人头| 日韩中文无线码在线视频| 露露的性战k8经典| 国内精品自线在拍2020不卡| youjizz怎么看| 在线观看a视频| 亚洲免费va在线观看| 色欲国产麻豆一精品一AV一免费 | 免费被靠视频动漫| 国产在线伊人| 国产爱豆剧果冻传媒在线| FREE另类老女人| 7m凹凸国产刺激在线视频| 亚洲七七久久桃花综合| 色欲AV亚洲情无码AV蜜桃| 牛牛在线精品视频(正)| 久久一本岛在免费线观看2020| 国产午夜精品鲁丝片| 高hbl双性浪荡古代| yellow免费观看在线| 2021久久精品免费观看| 亚洲三级视频在线| 香蕉在线播放| 久久久GOGO无码啪啪艺术| 无羞耻肉动漫在线观看| 国产成人99久久亚洲综合精品 | 一本二卡三卡四卡乱码麻豆| 粉色视频午夜网站入口| 男人J进女人P| 最新国产在线视频在线| 护士美女照片| 为什么丈夫插我我却喜欢被打着插| 99视频免费看| 久久免费精品视频| 在线观看亚洲免费人成网址|