欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c語言大小端(數(shù)據(jù)在內(nèi)存中的存儲(chǔ))

 更新時(shí)間:2023年09月11日 10:35:44   作者:sifanchao  
大小端是內(nèi)存存儲(chǔ)字節(jié)的兩種方式,一個(gè)是大端存儲(chǔ),一個(gè)是小端存儲(chǔ),本文主要介紹了c語言大小端,具有一定的參考價(jià)值,感興趣的可以了解一下

大小端模式介紹

  • 大端(存儲(chǔ))模式:是指一個(gè)數(shù)據(jù)的低位字節(jié)序的內(nèi)容放在高地址處,高位字節(jié)序存的內(nèi)容放在低地址處。
  • 小端(存儲(chǔ))模式:是指一個(gè)數(shù)據(jù)的低位字節(jié)序內(nèi)容存放在低地址處,高位字節(jié)序的內(nèi)容存放在高地址處。(可以總結(jié)為“小小小”即低位、低地址、小端)

在計(jì)算機(jī)系統(tǒng)中,我們是以字節(jié)為單位存放數(shù)據(jù)的,每個(gè)地址單元都對(duì)應(yīng)著一個(gè)字節(jié),一個(gè)字節(jié)為8bit。但在C語言中存在不同的數(shù)據(jù)類型,占用的字節(jié)數(shù)也各不相同,那么就存在怎樣存放多個(gè)字節(jié)的問題,因此就出現(xiàn)了大端存儲(chǔ)模式和小端存儲(chǔ)模式。

我們可以創(chuàng)建一個(gè)整型變量i,在調(diào)試時(shí),打開調(diào)試>>窗口>>內(nèi)存,輸入&i,就可以在內(nèi)存窗口中看到變量i在內(nèi)存中是如何存儲(chǔ)的了。

從圖可以看出整型變量i在內(nèi)存中是其字節(jié)序低位的內(nèi)容存放在低地址,字節(jié)序高位的內(nèi)容存放在高地址,所以這臺(tái)機(jī)器是小端存儲(chǔ)模式。

由此我們可以通過觀察低地址處存放的內(nèi)容來判斷當(dāng)前機(jī)器的存儲(chǔ)模式,那么我們可以設(shè)計(jì)一個(gè)小程序來判斷當(dāng)前機(jī)器的存儲(chǔ)模式。

方法1:

#include <stdio.h>
int main()
{
    int i = 1;
    char *a = (char *)&i;
    if(*a == 1)
        printf("小端\n");
    else
        printf("大端\n");
    return 0;
}

方法2:共同體判斷

int Check_Sys()
{
    union
    {
        int i;
        char c;
    }un;
    un.i = 1;
    return un.c;//如果是小端返回1,如果是大端返回0
}
int main()
{
    if(Check_Sys())
        printf("小端\n");
    else
        printf("大端\n");
    return 0;
}

上面的共用體變量un,大小sizeof(un)=4,注意使用共用體(聯(lián)合)判斷時(shí),不能僅依靠公用類型最大者為其共用體變量大小,應(yīng)遵守對(duì)其原則和補(bǔ)齊原則。

對(duì)齊原則:結(jié)構(gòu)體變量中元素是按照定義順序一個(gè)一個(gè)放到內(nèi)存中去的,但并不是緊密排列的。從結(jié)構(gòu)體存儲(chǔ)的首地址開始,每一個(gè)元素放置到內(nèi)存中時(shí),它都會(huì)認(rèn)為內(nèi)存是以它自己的大小來劃分的,因此元素放置的位置一定會(huì)在自己寬度的整數(shù)倍上開始(以結(jié)構(gòu)體變量首地址為0計(jì)算)。

補(bǔ)齊原則:檢查計(jì)算出的存儲(chǔ)單元是否為所有元素中所占內(nèi)存最大的元素的長度的整數(shù)倍,是,則結(jié)束;若不是,則補(bǔ)齊為它的整數(shù)倍。

舉一個(gè)例子:

union Un
{
    int i;
    char arr[5];
};

sizeof(union Un)=8

到此這篇關(guān)于c語言大小端(數(shù)據(jù)在內(nèi)存中的存儲(chǔ))的文章就介紹到這了,更多相關(guān)c語言大小端內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • windows上安裝CLion教程及簡單使用詳解

    windows上安裝CLion教程及簡單使用詳解

    這篇文章主要介紹了windows上安裝CLion教程及簡單使用,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • C語言超詳細(xì)講解函數(shù)指針的運(yùn)用

    C語言超詳細(xì)講解函數(shù)指針的運(yùn)用

    函數(shù)指針是一個(gè)指針變量,它可以存儲(chǔ)函數(shù)的地址,然后使用函數(shù)指針,下面這篇文章主要給大家介紹了關(guān)于C語言進(jìn)階教程之函數(shù)指針的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • C語言中結(jié)構(gòu)體、聯(lián)合體的成員內(nèi)存對(duì)齊情況

    C語言中結(jié)構(gòu)體、聯(lián)合體的成員內(nèi)存對(duì)齊情況

    這篇文章主要給大家介紹了關(guān)于C語言中結(jié)構(gòu)體、聯(lián)合體的成員內(nèi)存對(duì)齊情況的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 基于c語言知識(shí)點(diǎn)的補(bǔ)遺介紹

    基于c語言知識(shí)點(diǎn)的補(bǔ)遺介紹

    本篇文章是對(duì)c語言知識(shí)點(diǎn)的一些補(bǔ)遺進(jìn)行詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言模擬內(nèi)存函數(shù)分析之mencpy與memmove

    C語言模擬內(nèi)存函數(shù)分析之mencpy與memmove

    這篇文章主要介紹了C語言詳解如何模擬內(nèi)存函數(shù),用到了mencpy與memmove兩個(gè)函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • 最新評(píng)論