當前位置:首頁 » 服務存儲 » 存儲類型理解
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

存儲類型理解

發布時間: 2022-12-18 04:15:39

c語言的基本變數存儲類型的初值,以及作用范圍.生存期的概念和關系

變數的存儲類型是指變數在內存中的存儲方式,分為靜態存儲和動態存儲,表示了變數的生存期。

變數分類特性表存儲方式存儲類型說明符何處定義生存期作用域賦值前的值可賦初值類型動態存儲自動變數 auto 寄存器變數 register 函數或復合語句內被調用時在定義它的函數或復合語句內不定基本類型int或char外部變數extern函數之外整個源程序整個源程序靜態局部變數static 函數或復合語句內靜態全局變數static 函數之外整個源程序在定義它的函數或復合語句內在定義它的源文件內0任何類型

⑵ C語言之什麼是存儲類型

四種變數存儲類型。說明符如下:
auto static extern register
一、auto
auto稱為自動變數。

局部變數是指在函數內部說明的變數(有時也稱為自動變數)。用關鍵字auto進
行說明, 當auto省略時, 所有的非全程變數都被認為是局部變數, 所以auto實際上
從來不用。

二、static
static稱為靜態變數。根據變數的類型可以分為靜態局部變數和靜態全程變數。
1. 靜態局部變數
它與局部變數的區別在於: 在函數退出時, 這個變數始終存在, 但不能被其它
函數使用, 當再次進入該函數時, 將保存上次的結果。其它與局部變數一樣。
2. 靜態全程變數
Turbo C將大型程序分成若干獨立模塊文件分別編譯, 然後將所有模塊
的目標文件連接在一起, 從而提高編譯速度, 同時也便於軟體的管理和維護。靜態
全程變數就是指只在定義它的源文件中可見而在其它源文件中不可見的變數。它與
全程變數的區別是: 全程變數可以再說明為外部變數(extern), 被其它源文件使用,
而靜態全程變數卻不能再被說明為外部的, 即只能被所在的源文件使用。
三、extern
extern稱為外部變數。為了使變數除了在定義它的源文件中可以使用外, 還要
被其它文件使用。因此, 必須將全程變數通知每一個程序模塊文件, 此時可用
extern來說明。
四、register
register稱為寄存器變數。

⑶ C語言中有哪些存儲類型

c語言中的存儲類型有auto, extern, register, static 這四種,存儲類型說明了該變數要在進程的哪一個段中分配內存空間,可以為變數分配內存存儲空間的有數據區、BBS區、棧區、堆區。

1. auto存儲類型
auto只能用來標識局部變數的存儲類型,對於局部變數,auto是默認的存儲類型,不需要顯示的指定。因此,auto標識的變數存儲在棧區中。
2. extern存儲類型
extern用來聲明在當前文件中引用在當前項目中的其它文件中定義的全局變數。如果全局變數未被初始化,那麼將被存在BBS區中,且在編譯時,自動將其值賦值為0,如果已經被初始化,那麼就被存在數據區中。全局變數,不管是否被初始化,其生命周期都是整個程序運行過程中,為了節省內存空間,在當前文件中使用extern來聲明其它文件中定義的全局變數時,就不會再為其分配內存空間。

3. register存儲類型
聲明為register的變數在由內存調入到CPU寄存器後,則常駐在CPU的寄存器中,因此訪問register變數將在很大程度上提高效率,因為省去了變數由內存調入到寄存器過程中的好幾個指令周期。

4. static存儲類型
被聲明為靜態類型的變數,無論是全局的還是局部的,都存儲在數據區中,其生命周期為整個程序,如果是靜態局部變數,其作用域為一對{}內,如果是靜態全局變數,其作用域為當前文件。靜態變數如果沒有被初始化,則自動初始化為0。靜態變數只能夠初始化一次。

⑷ 中長尾常見的存儲類型是哪三類

分類如下:
1、直連式存儲:Direct-Attached Storage,簡稱DAS;
2、網路附加存儲:Network-Attached Storage,簡稱NAS;
3、存儲區域網路:Storage Area Network,簡稱SAN。
存儲設備類型是指通過採用SCSI、FC、TCP/IP,ISCSI等介面類型、數據傳輸協議、以及不同數據存儲介質的存儲設備。常見的存儲設備類型可為SCSI存儲、NAS存儲、FC存儲、iSCSI存儲和磁帶存儲。

⑸ 變數的存儲類型

我們在程序中會經常定義一些變數來保存和處理數據。從本質上看,變數代表了一段可操作的內存,也可以認為變數是內存的符號化表示。當程序中需要使用內存時,可以定義某種類型的變數。此時編譯器根據變數的數據類型分配一定大小的內存空間。程序就可以通過變數名來訪問對應的內存了。
如果說變數的數據類型決定了對應內存的大小,那麼存儲類型則影響著對應內存的使用方式。所謂使用方式,具體說就是在什麼時間、程序的什麼地方可以使用變數,即變數的生命周期和作用域。
先了解一些基本常識。一、在程序運行時內存中有三個區域可以保存變數:靜態存儲區、棧(stack)和堆(heap)。二、根據變數定義的位置可分為全局變數(定義在函數體外的變數)和局部變數(定義在函數體內的變數,包括形參)。
所有的全局變數和靜態局部變數(定義時使用關鍵字static)都保存在靜態存儲區,其特點是:在編譯時分配內存空間並進行初始化。在程序運行期間,變數一直存在,直到程序結束,變數對應的內存空間才被釋放。
而所有的非靜態局部變數(又稱為自動變數)保存在棧(stack)中,其特點是:在變數所在的函數或模塊被執行時動態創建,函數或模塊執行完時,變數對應的內存空間被釋放。換句話說,函數或模塊每被執行一次,局部變數就會重新被分配空間。如果變數定義時沒有初始化,那麼變數中的值是隨機數。
所有用malloc分配的內存(又稱為動態內存)都在堆(heap)中,其特點是:一般通過指針來訪問動態分配的內存。即可以通過free來手動釋放動態內存,也可以在程序結束時由系統自動釋放。
以上討論的是變數的生命周期,下面來看作用域。作用域指的是變數的可見范圍,即在變數的生命周期內,程序的哪些部分可以使用該變數。
全局變數的作用域從定義點開始一直到源文件的結束。如果要在定義點之前使用全局變數的話就需要使用關鍵字extern對作用域進行擴展。全局變數預設是可以被其他文件引用的。如果希望僅限於本文件使用的話,需要在定義時使用關鍵字static。
對於局部變數來說,無論是靜態局部變數還是自動變數,作用域都僅限於定義該變數的函數或模塊。
動態內存只要沒有被釋放就可以在程序的任何地方使用,前提是要知道動態內存的地址。
註:static加在全局變數前影響的是作用域,加在局部變數前影響的是生命周期。

⑹ 什麼是變數的存儲類型

量有4種存儲類型,分別是auto(自動型)、static(靜態型)、register(寄存器型)和extern(外部型)。在定義或說明一個變數時可以加上存儲類型關鍵字,以限定其存儲類別。
存儲類型決定了系統將在哪一個數據存儲區為變數分配存儲空間。

⑺ 對於數據類型和存儲類別,你是如何理解的

二級C難度也不是太大,心態要放好考試大綱不會有太大改變但時間方面:以前:筆試(120分鍾) 機試(90分鍾)現在:筆試(90分鍾) 機試(120分鍾)上機環境:以前:TC現在:VC公共基礎知識基本要求1.熟悉Visual C++ 6.0集成開發環境。2.掌握結構化程序設計的方法,具有良好的程序設計風格。3.掌握程序設計中簡單的數據結構和演算法並能閱讀簡單的程序。4.在Visual C++ 6.0集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力。考試內容一、C語言程序的結構1.程序的構成,main函數和其他函數。2.頭文件,數據說明,函數的開始和結束標志以及程序中的注釋。3.源程序的書寫格式。4.C語言的風格。二、數據類型及其運算1.C的數據類型(基本類型,構造類型,指針類型,無值類型)及其定義方法。2.C運算符的種類、運算優先順序和結合性。3.不同類型數據間的轉換與運算。4.C表達式類型(賦值表達式,算術表達式,關系表達式,邏輯表達式,條件表達式,逗號表達式)和求值規則。三、基本語句1.表達式語句,空語句,復合語句。2.輸入輸出函數的調用,正確輸入數據並正確設計輸出格式。四、選擇結構程序設計1.用if語句實現選擇結構。2.用switch語句實現多分支選擇結構。3.選擇結構的嵌套。五、循環結構程序設計1.for循環結構。2.while和do-while循環結構。3.continue語句break語句。4.循環的嵌套。六、數組的定義和引用1.一維數組和二維數組的定義、初始化和數組元素的引用。2.字元串與字元數組。七、函數1.庫函數的正確調用。2.函數的定義方法。3.函數的類型和返回值。4.形式參數與實在參數,參數值的傳遞。5.函數的正確調用,嵌套調用,遞歸調用。6.局部變數和全局變數。7.變數的存儲類別(自動,靜態,寄存器,外部),變數的作用域和生存期。八、編譯預處理1.宏定義和調用(不帶參數的宏,帶參數的宏)。2.「文件包含」處理。九、指針1.地址與指針變數的概念,地址運算符與間址運算符。2.一維。二維數組和字元串的地址以及指向變數、數組、字元串、函數、結構體的指針變數的定義。通過指針引用以上各類型數據。3.用指針作函數參數。4.返回地址值的函數。5.指針數組,指向指針的指針。十、結構體(即「結構」)與共同體(即:「聯合」)1.用typedef說明一個新類型。2.結構體和共用體類型數據的定義和成員的引用。3.通過結構體構成鏈表,單向鏈表的建立,結點數據的輸出、刪除與插入。十一、位運算1.位運算符的含義和使用。2.簡單的位運算。十二、文件操作只要求緩沖文件系統(即高級磁碟I/O系統),對非標准緩沖文件系統(即低級磁碟I/O系統)不要求。1.文件類型指針(FILE類型指針)。2.文件的打開與關閉(fopen,fclose)。3.文件的讀寫(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函數的應用),文件的定位(rewind,fseek函數的應用)。上機操作包括:(1)填空(30分)(2)改錯(30分)(3)編程(40分)

⑻ C語言中有哪些存儲類型

Turbo C2.0支持四種變數存儲類型。說明符如下: x0dx0a auto static extern register x0dx0a下面分別來介紹。 x0dx0a一、auto x0dx0aauto稱為自動變數。x0dx0ax0dx0a局部變數是指在函數內部說明的變數(有時也稱為自動變數)。用關鍵字auto進 x0dx0a行說明, 當auto省略時, 所有的非全程變數都被認為是局部變數, 所以auto實際上 x0dx0a從來不用。 x0dx0a 局部變數在函數調用時自動產生, 但不會自動初始化, 隨函數調用的結束, 這 x0dx0a個變數也就自動消失了, 下次調用此函數時再自動產生, 還要再賦值, 退出時又自 x0dx0a動消失。 x0dx0a二、static x0dx0a static稱為靜態變數。根據變數的類型可以分為靜態局部變數和靜態全程變數。 x0dx0a 1. 靜態局部變數 x0dx0a 它與局部變數的區別在於: 在函數退出時, 這個變數始終存在, 但不能被其它 x0dx0a函數使用, 當再次進入該函數時, 將保存上次的結果。其它與局部變數一樣。 x0dx0a 2. 靜態全程變數 x0dx0a Turbo C2.0允許將大型程序分成若干獨立模塊文件分別編譯, 然後將所有模塊 x0dx0a的目標文件連接在一起, 從而提高編譯速度, 同時也便於軟體的管理和維護。靜態 x0dx0a全程變數就是指只在定義它的源文件中可見而在其它源文件中不可見的變數。它與 x0dx0a全程變數的區別是: 全程變數可以再說明為外部變數(extern), 被其它源文件使用, x0dx0a而靜態全程變數卻不能再被說明為外部的, 即只能被所在的源文件使用。 x0dx0a三、extern x0dx0a extern稱為外部變數。為了使變數除了在定義它的源文件中可以使用外, 還要 x0dx0a被其它文件使用。因此, 必須將全程變數通知每一個程序模塊文件, 此時可用 x0dx0aextern來說明。 x0dx0a四、register x0dx0a register稱為寄存器變數。它只能用於整型和字元型變數。定義符register說 x0dx0a明的變數被Turbo C2.0存儲在CPU的寄存器中, 而不是象普通的變數那樣存儲在內 x0dx0a存中, 這樣可以提高運算速度。但是Turbo C2.0隻允許同時定義兩個寄存器變數, x0dx0a一旦超過兩個, 編譯程序會自動地將超過限制數目的寄存器變數當作非寄存器變數 x0dx0a來處理。因此, 寄存器變數常用在同一變數名頻繁出現的地方。 x0dx0a 另外, 寄存器變數只適用於局部變數和函數的形式參數, 它屬於auto型變數, x0dx0a因此, 不能用作全程變數。定義一個整型寄存器變數可寫成: x0dx0a register int a; x0dx0a 對於以上所介紹的變數類型和變數存儲類型將會在以後的學習中, 通過例行程 x0dx0a序中的定義、使用來逐漸加深理解。

⑼ 存儲器可分為哪三類

存儲器不僅可以分為三類。因為按照不同的劃分方法,存儲器可分為不同種類。常見的分類方法如下。

一、按存儲介質劃分

1. 半導體存儲器:用半導體器件組成的存儲器。

2. 磁表面存儲器:用磁性材料做成的存儲器。

二、按存儲方式劃分

1. 隨機存儲器:任何存儲單元的內容都能被隨機存取,且存取時間和存儲單元的物理位置無關。

2. 順序存儲器:只能按某種順序來存取,存取時間和存儲單元的物理位置有關。

三、按讀寫功能劃分

1. 只讀存儲器(ROM):存儲的內容是固定不變的,只能讀出而不能寫入的半導體存儲器。

2. 隨機讀寫存儲器(RAM):既能讀出又能寫入的存儲器。

二、選用各種存儲器,一般遵循的選擇如下:

1、內部存儲器與外部存儲器

一般而言,內部存儲器的性價比最高但靈活性最低,因此用戶必須確定對存儲的需求將來是否會增長,以及是否有某種途徑可以升級到代碼空間更大的微控制器。基於成本考慮,用戶通常選擇能滿足應用要求的存儲器容量最小的微控制器。

2、引導存儲器

在較大的微控制器系統或基於處理器的系統中,用戶可以利用引導代碼進行初始化。應用本身通常決定了是否需要引導代碼,以及是否需要專門的引導存儲器。

3、配置存儲器

對於現場可編程門陣列(FPGA)或片上系統(SoC),可以使用存儲器來存儲配置信息。這種存儲器必須是非易失性EPROM、EEPROM或快閃記憶體。大多數情況下,FPGA採用SPI介面,但一些較老的器件仍採用FPGA串列介面。

4、程序存儲器

所有帶處理器的系統都採用程序存儲器,但是用戶必須決定這個存儲器是位於處理器內部還是外部。在做出了這個決策之後,用戶才能進一步確定存儲器的容量和類型。

5、數據存儲器

與程序存儲器類似,數據存儲器可以位於微控制器內部,或者是外部器件,但這兩種情況存在一些差別。有時微控制器內部包含SRAM(易失性)和EEPROM(非易失)兩種數據存儲器,但有時不包含內部EEPROM,在這種情況下,當需要存儲大量數據時,用戶可以選擇外部的串列EEPROM或串列快閃記憶體器件。

6、易失性和非易失性存儲器

存儲器可分成易失性存儲器或者非易失性存儲器,前者在斷電後將丟失數據,而後者在斷電後仍可保持數據。用戶有時將易失性存儲器與後備電池一起使用,使其表現猶如非易失性器件,但這可能比簡單地使用非易失性存儲器更加昂貴。

7、串列存儲器和並行存儲器

對於較大的應用系統,微控制器通常沒有足夠大的內部存儲器。這時必須使用外部存儲器,因為外部定址匯流排通常是並行的,外部的程序存儲器和數據存儲器也將是並行的。

8、EEPROM與快閃記憶體

存儲器技術的成熟使得RAM和ROM之間的界限變得很模糊,如今有一些類型的存儲器(比如EEPROM和快閃記憶體)組合了兩者的特性。這些器件像RAM一樣進行讀寫,並像ROM一樣在斷電時保持數據,它們都可電擦除且可編程,但各自有它們優缺點。

參考資料來源:網路——存儲器