女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

    文章

    3109

    瀏覽量

    74992
  • 源碼
    +關注

    關注

    8

    文章

    668

    瀏覽量

    30143
  • 結構體
    +關注

    關注

    1

    文章

    130

    瀏覽量

    11033
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    滲壓計在混凝土結構中的安裝指南

    在現代土木工程和巖土工程中,滲壓計是監測混凝土結構體內孔隙水壓力變化的重要工具。南京峟思公司生產的滲壓計因其高精度和可靠性而被廣泛應用于各種工程監測項目中。一、滲壓計在混凝土結構中的應用價值滲壓計
    的頭像 發表于 05-28 10:55 ?85次閱讀
    滲壓計在混凝土<b class='flag-5'>結構</b><b class='flag-5'>體</b>中的安裝指南

    充電接口真的了解嗎?

    USB(Universal Serial Bus,通用串行總線)自1994年誕生以來,已成為我們日常生活中不可或缺的接口標準。從鍵盤、鼠標到手機、充電寶,USB接口無處不在。但知道USB接口也有
    的頭像 發表于 05-18 17:39 ?171次閱讀

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

    int value; // 4字節 }; // 寫入arr[0]=\'A\'后,value的二進制表示為0x41 三、實戰代碼深度剖析 3.1 結構應用場景 typedef struct
    發表于 04-08 09:18

    采購GUTOR UPS備品備件,隱藏的“雷區” 了解嗎?

    在GUTOR UPS備品備件采購之路上,困難重重,選型、渠道甄別、成本把控、安裝部署、售后保障,樁樁件件都是棘手難題。隱藏的“雷區” 了解嗎?
    發表于 03-21 16:08

    真的了解M12接頭A和D嗎?選型前必知的區別要點

    只有深入了解M12接頭A和D在各方面的區別,才能在選型時做到精準無誤,確保電氣連接系統高效、穩定運行。如果在選型過程中還有其他具體問題,歡迎隨時與我交流。
    的頭像 發表于 01-22 16:00 ?528次閱讀
    <b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>了解</b>M12接頭A和D嗎?選型前必知的區別要點

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

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

    深度了解SiC的晶體結構

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

    C語言和C++中結構的區別

    同樣是結構,看看在C語言和C++中有什么區別?
    的頭像 發表于 10-30 15:11 ?660次閱讀

    字節豆包推出AI智能耳機

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

    服務器cpu占用率高怎么解決

    服務器CPU占用率高是一個常見的問題,它可能會導致服務器性能下降,甚至影響用戶體驗。 一、了解服務器CPU占用率高的原因 應用程序問題 應用程序設計不合理,導致CPU占用率高 應用程序
    的頭像 發表于 10-10 15:14 ?1640次閱讀

    聚徽-工控一是否需要重裝系統怎么判斷

    判斷工控一是否需要重裝系統,可以根據以下幾個方面來綜合考慮:
    的頭像 發表于 09-11 09:27 ?443次閱讀

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

    認識貼片電阻嗎,對他了解多少?
    的頭像 發表于 08-27 15:49 ?1055次閱讀
    <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 ?1292次閱讀
    【GD32 MCU 入門教程】六、GD32 MCU 選項<b class='flag-5'>字節</b>設置及解除方法

    ota升級的庫中,結構upgrade_server_info中pespconn的作用是什么?

    check_cb; struct espconn *pespconn; }; 這個結構中已經有ip,port,pespconn這個結構
    發表于 07-12 06:33

    知道一成型電感多少錢嗎

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