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

c語言存儲單元概念

發布時間: 2022-06-19 21:41:35

⑴ 剛學習c語言,看不懂這個變數的概念,書上好像是說什麼存儲單元,請幫忙仔細介紹一下,謝謝

數據存儲在存儲單元 變數都有變數名 這個變數名相當於這個存儲單元的名字 在程序中對這個變數賦值或者操作都相當於對存儲單元操作。 比如有個變數操作地址為0xef4567df(瞎寫的),當你想對這個地址進行操作時,直接用這個變數名即可 。其實,一般程序中不會在意某個變數的地址到底是什麼,而這些變數的分配,系統也是有一定的機制的。另外,不同的變數佔用不同長度的位元組,比如char是1位元組,int 是4位元組

⑵ 在c語言中,變數名 地址 存儲單元的內容 分別怎樣儲存

首先,在C語言中,存儲器實際上是一個大的位元組數組,位元組數組中的每一個元素稱為存儲單元,基本的存儲單元為位元組。

其次,在C語言中,每一個存儲單元佔一個位元組,每一個位元組對應一個地址,這個地址即為內存地址。

再次,在C語言中,變數名是一個標識符,在C語言中標識符只能有數字、字母、下劃線(_)組成,且第一個符號必須是字母或者下劃線(_)。

最後,對於C語言中的變數來說,它具備兩個基本的屬性,一個是地址,一個是內容。正是因為此,所以在函數參數傳遞時有兩種方法一種是傳址,一種是傳值 。比如下面的代碼:

inta=2;//a是變數名,它有兩個屬性,一個是地址,一個是值。
int*p=&a;//使用取地址運算符&即可獲取變數的地址
intb=a;//使用變數名可以取得變數的值
intc=*p;//使用間接引用運算符*也可以取得變數a的值。

⑶ 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。靜態變數只能夠初始化一次。

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

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

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

存儲單元的地址是一個指針類型的。
而存儲單元的類型是數據的具體類型。
舉個例子吧。
定義一個整型變數int a = 1;
那麼存儲單元的地址是&a,可以賦值給一個指向整型的指針:
int *p = &a;
而存儲單元的值是數值1,如果是四個位元組的話即是:
00000000 00000000 0000000 00000001.
通過指針p可以找到a的值,賦值給另一個變數。
int b = *p;
如果有很多盒子,每個放著一個蘋果。
那麼存儲單元的地址就是盒子的編號,而存儲單元的內容就是盒子里的蘋果。
通過編號是可以找到相應的蘋果的。

⑹ C語言中存儲單元與位有什麼不同嗎

c語言最小存儲單元是位元組,1位元組==8位。

⑺ 在c語言中靜態存儲單元與動態存儲單元有什麼區別

曬曬
靜態的內存使用的是棧空間內存,不用程序員自己來分配.動態內存由程序員根據需要來自己分配並收回.
最大的區別在於動態的內存分配時候會用new關鍵字或malloc或calloc函數,之所以要程序員自己來分配內存是由於有時候不能確定程序要使用多少內存,比如要通過用戶或者文件或者資料庫中的查詢結果來確定使用多少數據,這時候程序員無法在程序的編寫的時候就把內存給固定分配出來.這時候必須得讓程序在運行的時候自己來為自己找到可用的內存,就一定要用動態的方式來分配內存.
舉個例子,根據用戶的輸入一個整數來確定用戶要輸入的數組維數,這個整數不是一定確定的數值,我們可以用一個變數n來表示,並用它接受用戶的輸入,再根據n來生成一個整數數組.程序不能寫成int
array[n];的形式,這樣程序是不能編譯通過的,這是因為n是一個不確定的數值.只能用new或malloc來通過用戶的輸入來分配內存.可以寫成這樣:
int
n;
cout
<<
"input
n:";
cin
>>
n;
cout
<<
endl;
int*
iArray
=
new
int[n];
for
(int
i
=
0;
i
<
n;
i++)
{
cin
>>iArray[i];

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

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