chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

信盈達(dá) ? 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)存中開(kā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)體變量用點(diǎn)語(yǔ)法 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)存中開(kāi)辟空間。

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

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

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

地址為0的區(qū)域?yàn)楸A魠^(qū),程序運(yùn)行時(shí)并不會(huì)真正在內(nèi)存中開(kāi)空間,這里可以理解為借用了0值。

為了通用,可以將這種方法進(jìn)行宏定義:

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

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

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

#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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3125

    瀏覽量

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

    關(guān)注

    8

    文章

    671

    瀏覽量

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

    關(guān)注

    1

    文章

    131

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    定義IO初始化結(jié)構(gòu)

    由上述IOPORT相關(guān)功能的枚舉類型我們可以知道,在對(duì)IOPORT模塊進(jìn)行初始化時(shí)需要根據(jù)情況配置它們。因此我們定義一個(gè)IOPORT初始化的結(jié)構(gòu)類型IOPORT_Init_t,它的成員包括了由上述所有枚舉類型所聲明的變量,因此該結(jié)構(gòu)
    的頭像 發(fā)表于 07-16 16:26 ?554次閱讀

    滲壓計(jì)在混凝土結(jié)構(gòu)中的安裝指南

    在現(xiàn)代土木工程和巖土工程中,滲壓計(jì)是監(jiān)測(cè)混凝土結(jié)構(gòu)體內(nèi)孔隙水壓力變化的重要工具。南京峟思公司生產(chǎn)的滲壓計(jì)因其高精度和可靠性而被廣泛應(yīng)用于各種工程監(jiān)測(cè)項(xiàng)目中。一、滲壓計(jì)在混凝土結(jié)構(gòu)中的應(yīng)用價(jià)值滲壓計(jì)
    的頭像 發(fā)表于 05-28 10:55 ?161次閱讀
    滲壓計(jì)在混凝土<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>中的安裝指南

    CY7C65215A調(diào)用了CyReadDeviceConfig和CyWriteDeviceConfig,但數(shù)據(jù)的字節(jié)格式卻不透明/沒(méi)有記錄,為什么?

    我有另一個(gè)帖子中的 Linux 配置工具源代碼。 然而,在示例中,它調(diào)用了 CyReadDeviceConfig 和 CyWriteDeviceConfig,但數(shù)據(jù)的字節(jié)格式卻不透明/沒(méi)有記錄。 這些數(shù)據(jù)的格式是什么?
    發(fā)表于 05-22 06:26

    充電接口真的了解嗎?

    USB(Universal Serial Bus,通用串行總線)自1994年誕生以來(lái),已成為我們?nèi)粘I钪胁豢苫蛉钡慕涌跇?biāo)準(zhǔn)。從鍵盤、鼠標(biāo)到手機(jī)、充電寶,USB接口無(wú)處不在。但知道USB接口也有
    的頭像 發(fā)表于 05-18 17:39 ?748次閱讀

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

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

    采購(gòu)GUTOR UPS備品備件,隱藏的“雷區(qū)” 了解嗎?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    認(rèn)識(shí)貼片電阻嗎,對(duì)他了解多少?

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

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

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