91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

如何使用union來(lái)了解內(nèi)存?

Linux愛(ài)好者 ? 來(lái)源:嵌入式Linux ? 作者:寫(xiě)代碼的籃球球癡 ? 2021-06-22 17:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天一個(gè)讀者朋友給我發(fā)的一段代碼,這段代碼讓他有了疑惑。

代碼如下:

#include “stdio.h”int main()

{

typedef union{

short i;

char j[2];

}DATA;

DATA a;

a.j[0] = 10;

a.j[1] = 1;

printf(“%x

”,a.i);

return 0;

}

這里說(shuō)一個(gè)問(wèn)題,我們從printf上看到的不一定我們想看到的,所以我們需要去變量的內(nèi)存地址一探究竟,一定要了解內(nèi)存的布局,對(duì)內(nèi)存有所了解。

上面注釋的代碼,在我的電腦中運(yùn)行的結(jié)果不相同,所以要看printf的準(zhǔn)確輸出,應(yīng)該初始化變量a。

使用gdb來(lái)查看地址,可以準(zhǔn)確看到變量?jī)?nèi)存中的數(shù)據(jù)。

什么是大小端?

這個(gè)問(wèn)題在之前的文章說(shuō)過(guò),這里再重新提一下

大端模式(Big-endian),是指數(shù)據(jù)的高字節(jié),保存在內(nèi)存的低地址中,而數(shù)據(jù)的低字節(jié),保存在內(nèi)存的高地址中

小端模式(Little-endian),是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中

我們用這個(gè)再來(lái)看看我們的程序

#include “stdio.h”int main()

{

typedef union{

short i;

char j[2];

}DATA;

DATA a;

//a.j[0] = 10;

a.j[1] = 1;

printf(“%x

”,a.i);

return 0;

}

j[0]在低地址,j[1]在高地址,這個(gè)沒(méi)有什么意見(jiàn)吧?

內(nèi)存就是一個(gè)尺子,它是不斷變長(zhǎng)的,所以這個(gè)地址也是慢慢變大的,沒(méi)有任何問(wèn)題吧。

然后,我們可以看看現(xiàn)在的輸出,從上面的輸出可以看到輸出100,也就是j[1]在高地址,j[0]在低地址,那這個(gè)計(jì)算機(jī)就是小端模式。

也可以通過(guò)查看內(nèi)存地址來(lái)確認(rèn)

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    183

    文章

    7644

    瀏覽量

    145643
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73999

原文標(biāo)題:C 語(yǔ)言,使用 union 了解內(nèi)存

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    MangoTree Halo Ultra「全新PXI」,標(biāo)配自動(dòng)糾錯(cuò)內(nèi)存#

    內(nèi)存
    芒果樹(shù)數(shù)字
    發(fā)布于 :2026年03月06日 15:59:34

    rk基于linux/android內(nèi)存管理

    一、內(nèi)存分布 ? U-Boot 由前級(jí) Loader 加載到 CONFIG_SYS_TEXT_BASE 地址,初始化時(shí)會(huì)探明當(dāng)前系統(tǒng)的總內(nèi)存容 量, 32 位平臺(tái)上認(rèn)為最大 4GB 可用(但是不影響
    的頭像 發(fā)表于 12-15 10:42 ?215次閱讀
    rk基于linux/android<b class='flag-5'>內(nèi)存</b>管理

    共用體聲明

    共用體也稱(chēng)聯(lián)合體。 和結(jié)構(gòu)體還是有點(diǎn)像: union 共用體名稱(chēng) { 成員1; 成員2; 成員3; }; 但是兩者有本質(zhì)的不同。共用體的每一個(gè)成員共用一段內(nèi)存,那么這也就意味著它們
    發(fā)表于 12-05 07:24

    利用C語(yǔ)言union特性來(lái)定義RGB565格式

    本次分享的內(nèi)容是利用C語(yǔ)言union特性來(lái)定義RGB565格式 1)前言 在做視覺(jué)相關(guān)的任務(wù)時(shí),相機(jī)的輸入一般會(huì)是RGB565(uint16_t)的格式,而我們需要把它顯式轉(zhuǎn)換成RGB三通
    發(fā)表于 10-30 08:26

    RTThread支持內(nèi)存保護(hù)功能嗎?

    以前在其他視頻里看過(guò)說(shuō)單片機(jī)可以實(shí)現(xiàn)線程崩潰不會(huì)影響系統(tǒng)運(yùn)行, 我一直不知道怎么實(shí)現(xiàn)的, 最近了解到 MPU和Zephyr的內(nèi)存保護(hù), 這些在RTthread中可以實(shí)現(xiàn)嗎
    發(fā)表于 10-14 07:14

    科普:什么AI 內(nèi)存技術(shù)

    AI 內(nèi)存是一種專(zhuān)為人工智能 (AI) 應(yīng)用設(shè)計(jì)的新型內(nèi)存技術(shù)。與傳統(tǒng)的通用內(nèi)存(如 DDR5 或 LPDDR5)不同,AI 內(nèi)存的核心目標(biāo)是解決 AI 計(jì)算中遇到的兩大挑戰(zhàn):帶寬瓶頸
    的頭像 發(fā)表于 09-03 15:44 ?1404次閱讀

    性能優(yōu)于HBM,超高帶寬內(nèi)存 (X-HBM) 架構(gòu)來(lái)了!

    電子發(fā)燒友網(wǎng)綜合報(bào)道,NEO Semiconductor宣布推出全球首款用于AI芯片的超高帶寬內(nèi)存 (X-HBM) 架構(gòu)。該架構(gòu)旨在滿(mǎn)足生成式AI和高性能計(jì)算日益增長(zhǎng)的需求,其32Kbit數(shù)據(jù)總線
    的頭像 發(fā)表于 08-16 07:51 ?4925次閱讀
    性能優(yōu)于HBM,超高帶寬<b class='flag-5'>內(nèi)存</b> (X-HBM) 架構(gòu)<b class='flag-5'>來(lái)了</b>!

    eFUSE內(nèi)存是如何組織的?

    目前,我正在研究TRAVEO? 2G - CYT4EN。 我想了解一些與 eFUSE 相關(guān)的主題。 1. eFUSE 是控制器訪問(wèn)的物理芯片還是 SOC 的一部分? 2. eFUSE內(nèi)存是如何組織
    發(fā)表于 07-30 07:07

    【HZ-RK3568開(kāi)發(fā)板免費(fèi)體驗(yàn)】--開(kāi)發(fā)板了解與初探

    感謝合眾恒躍與發(fā)燒友論壇提供的開(kāi)發(fā)板與平臺(tái),收到實(shí)物如下 下面來(lái)了解下開(kāi)發(fā)板 開(kāi)發(fā)板由底板和核心板組成,核心板基于瑞芯微RK3568J處理器設(shè)計(jì),支持圖像H.264編解碼處理,內(nèi)置3D GPU可圖像
    發(fā)表于 06-28 23:42

    一文了解電壓諧波

    我們經(jīng)常會(huì)聽(tīng)到諧波,到底什么是諧波,怎么定義的?為什么要關(guān)注諧波?什么時(shí)候關(guān)注諧波?諧波如何計(jì)算或標(biāo)準(zhǔn)規(guī)定的諧波的算法是怎樣的?GB關(guān)于電壓諧波又是如何評(píng)估的?帶著諸多的問(wèn)題,我們一起來(lái)了解。
    的頭像 發(fā)表于 06-28 17:23 ?4770次閱讀
    一文<b class='flag-5'>了解</b>電壓諧波

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

    4字節(jié)對(duì)齊) 成員訪問(wèn):通過(guò).運(yùn)算符獨(dú)立操作 生命周期:所有成員同時(shí)存在 1.2 聯(lián)合體(Union)的奧秘 聯(lián)合體通過(guò)內(nèi)存共享機(jī)制實(shí)現(xiàn)數(shù)據(jù)復(fù)用,其內(nèi)存大小由最大成員決定: union
    發(fā)表于 04-08 09:18

    golang內(nèi)存分配

    作者:錢(qián)文 Go 的分配采用了類(lèi)似 tcmalloc 的結(jié)構(gòu).特點(diǎn): 使用一小塊一小塊的連續(xù)內(nèi)存頁(yè), 進(jìn)行分配某個(gè)范圍大小的內(nèi)存需求. 比如某個(gè)連續(xù) 8KB 專(zhuān)門(mén)用于分配 17-24 字節(jié),以此減少
    的頭像 發(fā)表于 03-31 15:00 ?516次閱讀
    golang<b class='flag-5'>內(nèi)存</b>分配

    HBM新技術(shù),橫空出世:引領(lǐng)內(nèi)存芯片創(chuàng)新的新篇章

    在這樣的背景下,高帶寬存儲(chǔ)器(HBM)技術(shù)應(yīng)運(yùn)而生,以其獨(dú)特的3D堆疊架構(gòu)和TSV(硅通孔)技術(shù),為內(nèi)存芯片行業(yè)帶來(lái)了前所未有的創(chuàng)新。
    的頭像 發(fā)表于 03-22 10:14 ?4961次閱讀
    HBM新技術(shù),橫空出世:引領(lǐng)<b class='flag-5'>內(nèi)存</b>芯片創(chuàng)新的新篇章