在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內(nèi)不再提示

你是否真的了解結(jié)構(gòu)體占用了多少字節(jié)?

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

結(jié)構(gòu)體成員所占內(nèi)存空間大小

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

一般情況下,如果想知道結(jié)構(gòu)體成員的內(nèi)存占用情況需要:

1、先用結(jié)構(gòu)體在內(nèi)存中開空間

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

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

此方法需要在內(nèi)存中開辟空間。

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

在閱讀源碼的時候偶然發(fā)現(xiàn)了一種非常妙的寫法:可以將結(jié)構(gòu)體指針強制指向地址為0的區(qū)域,然后直接用sizeof訪問成員。

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

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

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

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

Struct --- 結(jié)構(gòu)體類型名字

Attribute--- 結(jié)構(gòu)體成員名測試代碼如下,你也快去試一下吧!

#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;}

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

    關(guān)注

    8

    文章

    3100

    瀏覽量

    74866
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    665

    瀏覽量

    30044
  • 結(jié)構(gòu)體
    +關(guān)注

    關(guān)注

    1

    文章

    130

    瀏覽量

    11000
收藏 人收藏

    評論

    相關(guān)推薦

    C語言中結(jié)構(gòu)與聯(lián)合體的深度解析:內(nèi)存布局與應用場景

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

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

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

    結(jié)構(gòu)成員的順序會影響結(jié)構(gòu)的大小嗎

    相同的結(jié)構(gòu)成員,如果把順序調(diào)整一下,會不會影響結(jié)構(gòu)的大小? 答案是會的,這主要跟字節(jié)對齊有關(guān)。 比如這樣的
    的頭像 發(fā)表于 11-25 16:24 ?443次閱讀

    深度了解SiC的晶體結(jié)構(gòu)

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

    C語言和C++中結(jié)構(gòu)的區(qū)別

    同樣是結(jié)構(gòu),看看在C語言和C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?578次閱讀

    字節(jié)豆包推出AI智能耳機

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

    服務(wù)器cpu占用率高怎么解決

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

    聚徽-工控一是否需要重裝系統(tǒng)怎么判斷

    判斷工控一是否需要重裝系統(tǒng),可以根據(jù)以下幾個方面來綜合考慮:
    的頭像 發(fā)表于 09-11 09:27 ?385次閱讀

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

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

    【GD32 MCU 入門教程】六、GD32 MCU 選項字節(jié)設(shè)置及解除方法

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

    ota升級的庫中,結(jié)構(gòu)upgrade_server_info中pespconn的作用是什么?

    check_cb; struct espconn *pespconn; }; 這個結(jié)構(gòu)中已經(jīng)有ip,port,pespconn這個結(jié)構(gòu)
    發(fā)表于 07-12 06:33

    知道一成型電感多少錢嗎

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

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

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

    嵌入式中C語言結(jié)構(gòu)基本實現(xiàn)

    C語言中的數(shù)組只能允許程序員定義存儲相同類型數(shù)據(jù)。但是結(jié)構(gòu)是C語言編程中允許您存儲不同數(shù)據(jù)類型的數(shù)據(jù)。 結(jié)構(gòu)的定義 ????要想定義結(jié)構(gòu),必須用到 struct 關(guān)鍵字,struct
    的頭像 發(fā)表于 05-11 08:49 ?1346次閱讀
    嵌入式中C語言<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>基本實現(xiàn)

    Freertos隊列項里的字節(jié)長度是否可以獲取?

    最近剛學Freertos, 看到可以獲取Freertos隊列長度,但是隊列項里的字節(jié)長度是否可以獲取? 因為項目中隊列中會存放不定長字節(jié),需要對隊列中的數(shù)據(jù)分揀,每次分揀的時候遍歷所有隊列項長度,有點浪費,請教了
    發(fā)表于 04-29 07:17
    主站蜘蛛池模板: 在线高清一级欧美精品 | 亚洲在线a| 欧美极品第一页 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 国产精品网站在线进入 | 添人人躁日日躁夜夜躁夜夜揉 | www.日本免费 | 亚洲国产精品乱码在线观看97 | 日本中文字幕在线播放 | 人人公开免费超级碰碰碰视频 | 久久天天躁夜夜躁狠狠 | 午夜影院免费 | 女人扒开腿让男人桶到爽 | 国产papa| 色综合美国色农夫网 | 窝窝午夜看片免费视频 | 怡红院日本一道日本久久 | 色婷婷成人网 | 91亚洲免费视频 | 成人青草亚洲国产 | 天天射天天干天天舔 | 亚洲一区高清 | 奇米影视第四色7777 | 在线观看a网站 | 一区二区三区四区精品 | 天堂中文资源网 | 嘿嘿嘿视频在线观看网站 | 国产私密 | 天天涩综合 | 午夜在线免费视频 | 色婷婷六月天 | 久久久精品免费热线观看 | 欧美一级视频在线观看欧美 | 日韩亚洲人成在线综合日本 | 成在线人永久免费播放视频 | 综合黄色 | bt天堂资源在线种子 | 欧美黑人性受xxxx精品 | 久久久久久亚洲精品 | 看逼网址| 免费看欧美一级片 |