當前位置:首頁 » 編程語言 » c語言存儲單元有哪些
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言存儲單元有哪些

發布時間: 2022-11-29 20:55:34

A. 舉例寫出c語言的四種存儲類別。

auto:自動變數
auto存儲在內存的堆棧區,屬於臨時性存儲變數,並不長期佔用內存,可以被多次覆蓋。
register:寄存器變數
register與auto一樣屬於自動類別。區別在於register的值保存在CPU的寄存器中。計算機中只有寄存器中的數據才能直接參與運算,而一般變數是放在內存中的,變數參加運算是,需要先把變數從內存中取到寄存器中,然後計算。所以一般把使用最頻繁的變數定義成register變數。register變數只能在函數中定義,並只能是int和char型。
static:靜態變數
static一般存儲在數據區,,這類變數在數據說明時被分配了一定的內存空間,程序運行期間,它占據一個永久的存儲單元,,因此在對出函數後,存儲單元中的值仍舊保留。簡單說,程序運行時static型變數的值可以被語句改變,但當程序運行結束後,其值又變回原來的值。
extern:外部類型
estern變數在數據運行時被分配了一定的內存空間,該空間在整個運行程序中,只要程序存在,自始自終都被該變數使用,即其值始終不變

B. C語言中變數的存儲類型有哪幾種,存儲方式哪幾種謝嘍

在C語言中,對變數的存儲類型說明有以下四種:

1、auto 自動變數

2、register 寄存器變數

3、extern 外部變數

4、static 靜態變數

所謂存儲類型是指變數佔用內存空間的方式,也稱為存儲方式。

變數的存儲方式可分為「靜態存儲」和「動態存儲」兩種。

1、靜態存儲變數通常是在變數定義時就在存儲單元並一直保持不變,直至整個程序結束。

2、動態存儲變數是在程序執行過程中,使用它時才分配存儲單元,使用完畢立即釋放。典型的例子是函數的形式參數,在函數定義時並不給形參分配存儲單元,只是在函數被調用時,才予以分配,調用函數完畢立即釋放。

如果一個函數被多次調用,則反復地分配、釋放形參變數的存儲單元。從以上分析可知,靜態存儲變數是一直存在的,而動態存儲變數則時而存在時而消失。

(2)c語言存儲單元有哪些擴展閱讀:

變數根據定義的位置的不同的生命周期,具有不同的作用域,作用域可分為6種:全局作用域,局部作用域,語句作用域,類作用域,命名空間作用域和文件作用域。

一、從作用域看:

1、全局變數具有全局作用域。全局變數只需在一個源文件中定義,就可以作用於所有的源文件。當然,其他不包含全局變數的定義的源文件需要用extern關鍵字再次聲明這個全局變數。

2、靜態局部變數具有局部作用域,它只被初始化一次,自從第一次被初始化直到程序運行結束一直存在,它和全局變數的區別在於全局變數對所有函數都是可見的,而靜態局部變數只對定義自己的函數體始終可見。

3、局部變數也只有局部作用域,它是自動對象(auto),它在程序運行期間不是一直存在,而是只在函數執行期間存在,函數的一次調用執行結束後,變數被撤銷,其所佔用的內存也被收回。

4、靜態全局變數也具有全局作用域,它與全局變數的區別在於如果程序包含多個文件的話,它作用於定義它文件里,不能作用到其他文件里,即被static關鍵字修飾過的變數具有文件作用域。這樣即使兩個不同的源文件都定義了相同名字的靜態全局變數,它們也是不同的變數。

二、從分配空間看:

全局變數,靜態局部變數,靜態全局變數都在靜態存儲區分配空間,而局部變數在棧里分配空間。

全局變數本身就是靜態存儲方式,靜態全局變數當然也是靜態存儲方式。這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。

而靜態全局變數則限制了其作用域,即只在定義該變數的源文件內有效,在同一個源程序的其他源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其他源文件中引起錯誤。

1、靜態變數會放在程序的靜態數據存儲區(全局可見)中,這樣可以在下一次調用的時候還可以保持原來的賦值。這一點是它與堆棧變數和堆變數的區別。

2、變數用static告知編譯器,自己僅僅在變數的作用范圍內可見。這一點是它與全局變數的區別。

參考資料來源:網路-變數-存儲類型

C. 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序中的定義、使用來逐漸加深理解。

D. C語言中存儲單元有無的區別

存儲單元是內存的最小單元,也就是說存儲是有許多存儲單元組成,一個存儲單元大小就是一個位元組,佔8bit,每個存儲單元都有一個地址,相當於每個人都有一個身份證號碼一樣

比如:聲明一個int變數系統分4個位元組,也就是4個存儲單元

你們老師所講是跟什麼聯系在一起?

E. C語言中的內存地址和存儲單元是什麼概念

C語言中的內存地址和存儲單元是什麼概念
無符號的整數和有符號的正整數都是用二進制原碼來表示,而負整數則是使用補碼來表示(補碼的演算法:負數的絕對值的原碼安位取反再加一)。舉個例子來說吧:
假設機器使用的是16位來存儲整數。
10
的存在形式是0000000000001010
-10的存在形式:
(1)
|-10|
=
10
,10原碼為0000000000001010
(2)安位取反:
1111111111110101
(3)加1:
1111111111110110(最終結果)

F. C語言中有哪些存儲類型

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

G. c語言內存單元是按什麼編號的

內存單元。內存單元一般採用半導體存儲單元,包括隨機存儲器(RAM),只讀存儲器(ROM),以及高速緩存(CACHE)。只不過因為RAM是其中最重要的存儲器。S(synchronous)DRAM同步動態隨機存取存儲器:SDRAM為168腳,這是目前PENTIUM及以上機型使用的內存。

H. c語言中存儲單元的地址和存儲單元的內容有什麼區別

儲存單元的地址是地址(指存的東西的位置),儲存單元的內容是儲存單元里的數據。
例如:儲存單元的地址就是家的門牌號,儲存單元的內容是家裡的東西。

I. 在C語言中,存儲類別包括什麼

1、c語言中的存儲類型有static 、auto、extern、及register,函數默認的存儲類型應該是extern,意思是具有外部鏈接性的。一般來說,會通過extern來聲明函數。
2、比如下面的代碼,在1.c中定義一個函數,函數的聲明寫在1.h頭文件中,在2.c中通過添加1.h的頭文件,來聲明及調用函數f()。

//1.c
void f() { ; }
//1.h
extern void f();
//2.c
#include "1.h"
int main() { f();}