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

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

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

C語(yǔ)言動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)存儲(chǔ)方式

jf_78858299 ? 來(lái)源:C語(yǔ)言 ? 作者:閆小林 ? 2023-03-10 14:34 ? 次閱讀

C語(yǔ)言動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)存儲(chǔ)方式

靜態(tài)存儲(chǔ)方式是指在程序運(yùn)行期間由系統(tǒng)分配固定的存儲(chǔ)空間的方式;動(dòng)態(tài)存儲(chǔ)方式是在程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)的分配存儲(chǔ)空間的方式。

內(nèi)存中的供用戶使用的存儲(chǔ)空間可以分為3部分,

  • 程序區(qū)
  • 靜態(tài)存儲(chǔ)區(qū)
  • 動(dòng)態(tài)存儲(chǔ)區(qū)

全局變量全部存放在靜態(tài)存儲(chǔ)區(qū)中,在程序開(kāi)始執(zhí)行時(shí)給全局變量分配存儲(chǔ)區(qū),程序執(zhí)行完畢就釋放。

在動(dòng)態(tài)存儲(chǔ)區(qū)存放以下數(shù)據(jù)

  • 函數(shù)形式參數(shù)
  • 函數(shù)中定義的沒(méi)有用關(guān)鍵字static聲明的變量,即自動(dòng)變量。
  • 函數(shù)調(diào)用時(shí)的現(xiàn)場(chǎng)保護(hù)和返回地址等。

在C語(yǔ)言中,每一個(gè)變量和函數(shù)都有兩個(gè)屬性:

  • 數(shù)據(jù)類型
  • 數(shù)據(jù)的存儲(chǔ)類別。

C語(yǔ)言的存儲(chǔ)類別包括4種:

  • 自動(dòng)的(auto)
  • 靜態(tài)的(static)
  • 寄存器的(register)
  • 外部的(extern)。

C語(yǔ)言局部變量的存儲(chǔ)類別

自動(dòng)變量(auto變量)

  • 函數(shù)中的局部變量,如果不專門(mén)聲明static存儲(chǔ)類別,都是動(dòng)態(tài)地分配存儲(chǔ)空間的,數(shù)據(jù)存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū)中。自動(dòng)變量用關(guān)鍵字auto做存儲(chǔ)類別聲明。

靜態(tài)局部變量(static局部變量)

  • 函數(shù)中的局部變量的值在函數(shù)調(diào)用結(jié)束后不消失而繼續(xù)保留原值,即其占用的存儲(chǔ)單元不釋放,在下一次再調(diào)用該函數(shù)時(shí),該變量已有值。

寄存器變量(register變量)

  • 為提高執(zhí)行效率,允許將局部變量的值放在CPU中的寄存器中,需要用時(shí)直接從寄存器取出參加運(yùn)算,不必再到內(nèi)存中去存取。由于對(duì)寄存器的存取速度遠(yuǎn)高于對(duì)內(nèi)存的存取速度,因此這樣做可以提高執(zhí)行效率,這種變量叫寄存器變量,用關(guān)鍵字register作聲明。

C語(yǔ)言全局變量的存儲(chǔ)類別

在一個(gè)文件內(nèi)擴(kuò)展外部變量的作用域

  • 如果由于某種考慮,在定義點(diǎn)之前的函數(shù)需要引用該外部變量,則應(yīng)該在引用之前用關(guān)鍵字extern對(duì)該變量作“外部變量聲明”,表示把該外部變量的作用域擴(kuò)展到此位置。

將外部變量的作用域擴(kuò)展到其他文件。

將外部變量的作用域限制在本文件中。

注意,用auto、register和static聲明變量時(shí),是在定義變量的基礎(chǔ)上加上這些關(guān)鍵字,而不能單獨(dú)使用。

C語(yǔ)言****存儲(chǔ)類別案例

#include
int main()
{
auto int num1=10;
register int num2=20;
static int num3=30;
printf("%d\\n",num1);
printf("%d\\n",num2);
printf("%d\\n",num3);
return 0;
}

編譯運(yùn)行結(jié)果:

10
20
30

--------------------------------
Process exited after0.04696 secondswith return value0
請(qǐng)按任意鍵繼續(xù). . .
聲明:本文內(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)注

    180

    文章

    7575

    瀏覽量

    134020
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

    61965
  • 靜態(tài)存儲(chǔ)器

    關(guān)注

    0

    文章

    10

    瀏覽量

    7507
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    #硬聲創(chuàng)作季 39C語(yǔ)言最新標(biāo)準(zhǔn)化學(xué)習(xí)課程 數(shù)據(jù)存儲(chǔ)方式_存數(shù)據(jù)

    C語(yǔ)言數(shù)據(jù)存儲(chǔ)編程語(yǔ)言數(shù)據(jù)存儲(chǔ)技術(shù)數(shù)據(jù)存儲(chǔ)數(shù)據(jù)
    Mr_haohao
    發(fā)布于 :2022年09月05日 21:34:17

    #硬聲創(chuàng)作季 40C語(yǔ)言最新標(biāo)準(zhǔn)化學(xué)習(xí)課程 數(shù)據(jù)存儲(chǔ)方式_取數(shù)據(jù)

    C語(yǔ)言數(shù)據(jù)存儲(chǔ)編程語(yǔ)言數(shù)據(jù)存儲(chǔ)技術(shù)數(shù)據(jù)存儲(chǔ)數(shù)據(jù)
    Mr_haohao
    發(fā)布于 :2022年09月05日 21:35:36

    DSP外接存儲(chǔ)器的控制方式

    DSP外接存儲(chǔ)器的控制方式對(duì)于一般的存儲(chǔ)器具有RD、WR和CS等控制信號(hào),許多DSP(C3x、C5000)都沒(méi)有控制信號(hào)直接連接
    發(fā)表于 04-07 08:50

    FPGA的rom存儲(chǔ)方式是什么?

    小弟使用EP2C8Q208C8N利用mif文件來(lái)實(shí)現(xiàn)rom,想問(wèn)下,這里的rom是以字節(jié)、字還是其他什么方式存儲(chǔ)的?
    發(fā)表于 10-26 15:05

    【原創(chuàng)】單片機(jī)C語(yǔ)言程序的存儲(chǔ)區(qū)域解讀

    代碼,鏈接過(guò)程則將各個(gè)源文件生成的二進(jìn)制機(jī)器代碼文件組合成一個(gè)文件。C語(yǔ)言編寫(xiě)的程序經(jīng)過(guò)編譯-鏈接后,將形成一個(gè)統(tǒng)一文件,它由幾個(gè)部分組成。在程序運(yùn)行時(shí)又會(huì)產(chǎn)生其他幾個(gè)部分,各個(gè)部分代表了不同的存儲(chǔ)
    發(fā)表于 07-04 19:05

    單片機(jī)C語(yǔ)言程序的存儲(chǔ)區(qū)域解讀

    代碼,鏈接過(guò)程則將各個(gè)源文件生成的二進(jìn)制機(jī)器代碼文件組合成一個(gè)文件。C語(yǔ)言編寫(xiě)的程序經(jīng)過(guò)編譯-鏈接后,將形成一個(gè)統(tǒng)一文件,它由幾個(gè)部分組成。在程序運(yùn)行時(shí)又會(huì)產(chǎn)生其他幾個(gè)部分,各個(gè)部分代表了不同的存儲(chǔ)
    發(fā)表于 07-13 17:02

    C51語(yǔ)言的變量定義方式

    C51 語(yǔ)言的變量定義定義方式:普通變量:(修飾符)數(shù)據(jù)類型 [存儲(chǔ)類型] 變量名 [= 值]指針變量: (修飾符)所指向的地址的數(shù)據(jù)類型 [所指向的地址的
    發(fā)表于 12-01 06:18

    數(shù)據(jù)存儲(chǔ)方式

    數(shù)據(jù)存儲(chǔ)對(duì)象包括數(shù)據(jù)流在加工過(guò)程中產(chǎn)生的臨時(shí)文件或加工過(guò)程中需要查找的信息。數(shù)據(jù)以某種格式記錄在計(jì)算機(jī)內(nèi)部或外部存儲(chǔ)介質(zhì)上。數(shù)據(jù)存儲(chǔ)要命名,這種命名要反映信息特征的組成含義。數(shù)據(jù)流反映了系統(tǒng)中流動(dòng)的數(shù)據(jù),表現(xiàn)出
    的頭像 發(fā)表于 03-22 16:21 ?7236次閱讀

    C語(yǔ)言變量的存儲(chǔ)類別有哪些詳細(xì)資料介紹

    C語(yǔ)言中的變量根據(jù)其生存周期,可以分為靜態(tài)存儲(chǔ)方式動(dòng)態(tài)存儲(chǔ)
    的頭像 發(fā)表于 02-20 16:17 ?4594次閱讀

    C語(yǔ)言動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù)

    C語(yǔ)言動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù)
    的頭像 發(fā)表于 02-06 09:45 ?1255次閱讀

    C語(yǔ)言怎么建立內(nèi)存的動(dòng)態(tài)分配

    C語(yǔ)言中,全局變量是分配在內(nèi)存中的靜態(tài)存儲(chǔ)區(qū)的,非靜態(tài)的局部變量,包括形參是分配在內(nèi)存中的動(dòng)態(tài)
    的頭像 發(fā)表于 03-10 15:30 ?760次閱讀

    什么是堆內(nèi)存?存儲(chǔ)方式是什么樣的?

    存儲(chǔ)方式。 C 代碼中動(dòng)態(tài)申請(qǐng)堆內(nèi)存的申請(qǐng)函數(shù)是 malloc ,常見(jiàn)的內(nèi)存代碼如下圖所示: 因?yàn)閙alloc函數(shù)返回值是一個(gè)內(nèi)存地址,所以保存堆內(nèi)存的變量一定得是一個(gè)指針,當(dāng)然這個(gè)
    的頭像 發(fā)表于 06-22 10:29 ?1039次閱讀
    什么是堆內(nèi)存?<b class='flag-5'>存儲(chǔ)</b><b class='flag-5'>方式</b>是什么樣的?

    視頻監(jiān)控?cái)?shù)據(jù)有哪些存儲(chǔ)方式?哪種存儲(chǔ)方式最優(yōu)?

    視頻監(jiān)控?cái)?shù)據(jù)有哪些存儲(chǔ)方式?哪種存儲(chǔ)方式最優(yōu)? 隨著社會(huì)的發(fā)展,視頻監(jiān)控技術(shù)已經(jīng)成為城市安全管理中不可缺少的一部分。隨之而來(lái)的是海量的視頻監(jiān)控?cái)?shù)據(jù),如何合理地保存這些數(shù)據(jù)成為了一個(gè)重要
    的頭像 發(fā)表于 10-26 11:16 ?2712次閱讀

    存儲(chǔ)信息的方式有哪些種類

    存儲(chǔ)信息的方式有多種種類,它們?cè)诓煌膱?chǎng)景和需求下提供了各自的優(yōu)勢(shì)和特點(diǎn)。 一、傳統(tǒng)存儲(chǔ)方式 紙張存儲(chǔ):最古老的
    的頭像 發(fā)表于 12-01 13:36 ?5191次閱讀

    示波器文件存儲(chǔ)方式介紹

    示波器作為電子測(cè)試領(lǐng)域的重要工具,其功能不僅限于實(shí)時(shí)顯示和分析電信號(hào)波形,還涉及到數(shù)據(jù)的存儲(chǔ)和導(dǎo)出。隨著技術(shù)的發(fā)展,示波器提供了多種文件存儲(chǔ)方式,以滿足不同應(yīng)用場(chǎng)景下的數(shù)據(jù)保存需求。本文將詳細(xì)解析示波器的文件
    的頭像 發(fā)表于 05-29 17:08 ?713次閱讀