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

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

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

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

Wildesbeast ? 來(lái)源:今日頭條 ? 作者:算法集市 ? 2020-02-20 16:17 ? 次閱讀

C語(yǔ)言中的變量根據(jù)其生存周期,可以分為靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式。

靜態(tài)存儲(chǔ)方式:是指在程序運(yùn)行期間分配固定的存儲(chǔ)空間的方式。靜態(tài)存儲(chǔ)區(qū)中存放了在整個(gè)程序執(zhí)行過程中都存在的變量,如全局變量。

動(dòng)態(tài)存儲(chǔ)方式:是指在程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)的分配存儲(chǔ)空間的方式。動(dòng)態(tài)存儲(chǔ)區(qū)中存放的變量是根據(jù)程序運(yùn)行的需要而建立和釋放的,通常包括:自動(dòng)變量;函數(shù)形參;函數(shù)調(diào)用時(shí)的現(xiàn)場(chǎng)保護(hù)和返回地址等。

靜態(tài)分配和動(dòng)態(tài)分配的區(qū)別主要是兩個(gè):

時(shí)間不同:靜態(tài)分配發(fā)生在程序編譯和連接的時(shí)候,動(dòng)態(tài)分配則發(fā)生在程序調(diào)入和執(zhí)行的時(shí)候。

空間不同:堆都是動(dòng)態(tài)分配的,沒有靜態(tài)分配的堆。動(dòng)態(tài)分配由函數(shù)malloc進(jìn)行分配(需要注意的是有一個(gè)malloc,就有一個(gè)free對(duì)應(yīng))。棧有2種分配方式:靜態(tài)分配和動(dòng)態(tài)分配。靜態(tài)分配是編譯器完成的,比如局部變量的分配。不過棧的動(dòng)態(tài)分配和堆不同,它的動(dòng)態(tài)分配是由編譯器進(jìn)行釋放,無(wú)需人工實(shí)現(xiàn)。

C語(yǔ)言的內(nèi)存分配方式:堆和棧

變量示例

C語(yǔ)言中的變量具體包含有四種:自動(dòng)的(auto),靜態(tài)的(static),寄存器的(register),外部的(extern),如果不加以聲明,則認(rèn)為是auto型,自動(dòng)分配存儲(chǔ)空間,屬于動(dòng)態(tài)存儲(chǔ)方式。

Static聲明局部變量是在函數(shù)調(diào)用結(jié)束后不消失而保留原值,即占用存儲(chǔ)單元不釋放,在下一次調(diào)用該函數(shù)時(shí),該變量保持上次函數(shù)調(diào)用結(jié)束時(shí)的值。Static在對(duì)全局變量聲明中,該變量的作用域則僅限于本文件模塊操作。

Register變量是C語(yǔ)言中允許將局部變量的值放在CPU中的寄存器中需要時(shí)直接從寄存器中取出來(lái)參加運(yùn)算,不必再到內(nèi)存中提取,但是計(jì)算機(jī)系統(tǒng)中寄存器數(shù)量有限,不能任意定義任意多的存儲(chǔ)器,局部靜態(tài)變量不能定義為寄存器變量。

寄存器是最貼近CPU的,而且CPU只在寄存器中進(jìn)行存取。寄存的意思是暫時(shí)存放數(shù)據(jù),不用每次都從內(nèi)存中取,它是一個(gè)臨時(shí)的存放數(shù)據(jù)的空間。

關(guān)于寄存器變量有以下事項(xiàng)需要注意:

為寄存器變量分配寄存器是動(dòng)態(tài)完成的,因此,只有局部變量和形式參數(shù)才能定義為寄存器變量。

寄存器的長(zhǎng)度一般和機(jī)器的字長(zhǎng)一致,所以,只有較短的類型如int、char、short等才適合定義為寄存器變量,諸如double等較大的類型,不推薦將其定義為寄存器類型。

CPU的寄存器數(shù)目有限,因此,即使定義了寄存器變量,編譯器可能并不真正為其分配寄存器,而是將其當(dāng)做普通的auto變量來(lái)對(duì)待,為其分配棧內(nèi)存。當(dāng)然,有些優(yōu)秀的編譯器,能自動(dòng)識(shí)別使用頻繁的變量,如循環(huán)控制變量等,在有可用的寄存器時(shí),即使沒有使用 register 關(guān)鍵字,也自動(dòng)為其分配寄存器,無(wú)須由程序員來(lái)指定。

計(jì)算機(jī)系統(tǒng)的硬件組織:總線、IO、主存、CPU

Extern聲明外部變量,表示變量在別的文件中。在一個(gè)文件中,如果定義之前的函數(shù)想引用該外部變量,則應(yīng)該在引用之前用關(guān)鍵字extern對(duì)該變量做外部變量聲明。在多文件中,也可以采用extern聲明的辦法進(jìn)行外部變量聲明。有時(shí)希望某些局部變量只限于被本文件引用,而不能被其他文件引用,這時(shí)就可以采用在定義外部變量時(shí)外加一個(gè)static,這在程序模塊化設(shè)計(jì)中加強(qiáng)了通用性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

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

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62630
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28373
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    c語(yǔ)言變量的作用域和存儲(chǔ)類別

    c語(yǔ)言變量的作用域和存儲(chǔ)類別簡(jiǎn)述,很不錯(cuò)哦。
    發(fā)表于 07-14 17:12 ?0次下載

    C語(yǔ)言函數(shù)手冊(cè)詳細(xì)資料大全(免費(fèi)下載)

    C語(yǔ)言函數(shù)手冊(cè)詳細(xì)資料大全(免費(fèi)下載) 包括了各種C語(yǔ)言函數(shù)的:功能,用法,程序例
    發(fā)表于 06-04 08:07 ?81次下載

    C++語(yǔ)言入門教程之C++語(yǔ)言程序設(shè)計(jì)函數(shù)的詳細(xì)資料概述免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C++語(yǔ)言入門教程之C++語(yǔ)言程序設(shè)計(jì)函數(shù)的
    發(fā)表于 09-20 14:51 ?23次下載

    C語(yǔ)言入門教程之字符數(shù)據(jù)的詳細(xì)資料講解

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言入門教程之字符數(shù)據(jù)的詳細(xì)資料講解主要內(nèi)容包括了:1 字符型常量2 字符
    發(fā)表于 10-23 17:53 ?7次下載

    C語(yǔ)言入門教程之堆棧的詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言入門教程之堆棧的詳細(xì)資料概述。
    發(fā)表于 11-29 11:47 ?12次下載

    C語(yǔ)言程序設(shè)計(jì)教程之C語(yǔ)言基礎(chǔ)的詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言程序設(shè)計(jì)教程之C語(yǔ)言基礎(chǔ)的
    發(fā)表于 12-10 17:16 ?66次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>程序設(shè)計(jì)教程之<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>基礎(chǔ)的<b class='flag-5'>詳細(xì)資料</b>概述

    C語(yǔ)言教程之Makefile基礎(chǔ)的詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言教程之Makefile基礎(chǔ)的詳細(xì)資料說(shuō)明。
    發(fā)表于 01-23 11:05 ?12次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>教程之Makefile基礎(chǔ)的<b class='flag-5'>詳細(xì)資料</b>說(shuō)明

    C語(yǔ)言標(biāo)準(zhǔn)教程之C語(yǔ)言基礎(chǔ)知識(shí)的詳細(xì)資料說(shuō)明

    本文檔的詳細(xì)介紹的是C語(yǔ)言標(biāo)準(zhǔn)教程之C語(yǔ)言基礎(chǔ)知識(shí)的詳細(xì)資料
    發(fā)表于 02-15 11:26 ?6次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>標(biāo)準(zhǔn)教程之<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>基礎(chǔ)知識(shí)的<b class='flag-5'>詳細(xì)資料</b>說(shuō)明

    C語(yǔ)言教程之指針的詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言教程之指針的詳細(xì)資料說(shuō)明 學(xué)習(xí)目標(biāo)1.指針與指針變量2.指針的
    發(fā)表于 02-21 11:11 ?9次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>教程之指針的<b class='flag-5'>詳細(xì)資料</b>說(shuō)明

    C語(yǔ)言實(shí)用教程之函數(shù)的詳細(xì)資料說(shuō)明

    本文檔詳細(xì)介紹的是C語(yǔ)言實(shí)用教程之函數(shù)的詳細(xì)資料說(shuō)明主要內(nèi)容包括了:1程序設(shè)計(jì)的藝術(shù)性,2函數(shù)的定義與使用,3函數(shù)的作用域和
    發(fā)表于 02-26 14:43 ?3次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>實(shí)用教程之函數(shù)的<b class='flag-5'>詳細(xì)資料</b>說(shuō)明

    C語(yǔ)言程序設(shè)計(jì)教程課件之函數(shù)的詳細(xì)資料說(shuō)明

    本文檔詳細(xì)介紹的是C語(yǔ)言程序設(shè)計(jì)教程課件之函數(shù)的詳細(xì)資料說(shuō)明主要內(nèi)容包括了:1.概述,2.函數(shù)的定義,3.函數(shù)的返回值,4.函數(shù)的調(diào)用,5.
    發(fā)表于 02-28 10:35 ?3次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>程序設(shè)計(jì)教程課件之函數(shù)的<b class='flag-5'>詳細(xì)資料</b>說(shuō)明

    PHP八種變量類型的詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是PHP八種變量類型的詳細(xì)資料說(shuō)明免費(fèi)下載。
    發(fā)表于 03-01 17:20 ?7次下載
    PHP八種<b class='flag-5'>變量</b>類型的<b class='flag-5'>詳細(xì)資料</b>說(shuō)明

    C語(yǔ)言教程之?dāng)?shù)據(jù)類型與運(yùn)算符的詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言教程之?dāng)?shù)據(jù)類型與運(yùn)算符的詳細(xì)資料說(shuō)明主要內(nèi)容包括了:數(shù)據(jù)類型,常量與
    發(fā)表于 03-01 17:20 ?8次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>教程之?dāng)?shù)據(jù)類型與運(yùn)算符的<b class='flag-5'>詳細(xì)資料</b>說(shuō)明

    如何使用C語(yǔ)言實(shí)現(xiàn)軟復(fù)位詳細(xì)資料說(shuō)明

    本文檔的有內(nèi)容詳細(xì)介紹的是如何使用C語(yǔ)言實(shí)現(xiàn)軟復(fù)位詳細(xì)資料說(shuō)明。
    發(fā)表于 06-14 17:44 ?1次下載
    如何使用<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>實(shí)現(xiàn)軟復(fù)位<b class='flag-5'>詳細(xì)資料</b>說(shuō)明

    C語(yǔ)言教程之函數(shù)的詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言教程之函數(shù)的詳細(xì)資料說(shuō)明包括了:1 函數(shù)概述 ,2 函 數(shù) 定 義 ,3 函數(shù)的調(diào)用 ,4 函數(shù)參
    發(fā)表于 03-21 15:39 ?9次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>教程之函數(shù)的<b class='flag-5'>詳細(xì)資料</b>說(shuō)明