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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3156

    瀏覽量

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

    關(guān)注

    8

    文章

    678

    瀏覽量

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

    關(guān)注

    1

    文章

    131

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    WiFi7前端模塊(FEM):線性與非線性,真的了解它們的區(qū)別嗎?

    ▲點擊☆星標我,以防失聯(lián)在WiFi7(IEEE802.11be)技術(shù)中,經(jīng)常會聽到前端模塊(FEM)產(chǎn)品分為線性和非線性兩種類型,其核心差異是否了解呢?本文將從性能特點、應(yīng)用場景等方面詳細分析兩者
    的頭像 發(fā)表于 09-10 16:33 ?7290次閱讀
    WiFi7前端模塊(FEM):線性與非線性,<b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>了解</b>它們的區(qū)別嗎?

    干擾可以提高測量精度,是真的嗎?

    一、前言 水可以引燃蠟燭,是真的嗎?是真的! 蛇怕雄黃,是真的嗎?是假的! 上述兩個現(xiàn)象,已經(jīng)由央視 財經(jīng)頻道《是真的嗎?》揭秘。 今天要探討的是: 干擾可以提高測量精度,是
    的頭像 發(fā)表于 08-04 09:28 ?435次閱讀
    干擾可以提高測量精度,是<b class='flag-5'>真的</b>嗎?

    化超聲波清洗機是否真的比傳統(tǒng)清洗方法更高效?

    與傳統(tǒng)清洗方法的效率對比,并分析其優(yōu)缺點,以幫助讀者更好地了解何時選擇哪種清洗方法。目錄一化超聲波清洗機的工作原理傳統(tǒng)清洗方法的概述清洗效率比較成本和可持續(xù)性適用
    的頭像 發(fā)表于 07-28 16:43 ?259次閱讀
    一<b class='flag-5'>體</b>化超聲波清洗機<b class='flag-5'>是否</b><b class='flag-5'>真的</b>比傳統(tǒng)清洗方法更高效?

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

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

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

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

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

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

    充電接口真的了解嗎?

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

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

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

    別再說的單片機RAM不夠用了,來看看這個吧(可下載)

    的數(shù)據(jù)類型-結(jié)構(gòu)類型,對代碼中出現(xiàn)的變量進行類別的劃分,用構(gòu)造的結(jié)構(gòu)類型定義結(jié)構(gòu)變量,在寫
    發(fā)表于 03-28 14:12 ?0次下載

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

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

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

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

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

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

    科普課堂 | OSI模型,真的了解嗎?

    網(wǎng)絡(luò)通信是現(xiàn)代信息技術(shù)的基石,它使得人們可以在不同的地理位置之間快速、高效的傳遞信息,為了實現(xiàn)這一目標,需要一種標準的框架來描述網(wǎng)絡(luò)通信的過程。因此OSI七層網(wǎng)絡(luò)模型誕生了。簡單介紹-什么是OSI七層通信模型?OSI七層通信模型(學(xué)名叫OpenSystemInterconnection,意為開放互聯(lián)系統(tǒng)),也有很多人會寫成IOS七層或者ISO七層,這里大家可
    的頭像 發(fā)表于 10-18 17:37 ?2712次閱讀
    科普課堂 | OSI模型,<b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>了解</b>嗎?