变量的存储类别以及作用空间
從變量值存在的時間角度劃分,可以把變量劃為靜態存儲空間和動態存儲空間。
所謂靜態存儲空間是指在程序運行期間分配固定的存儲空間的方式。而動態存儲空間是在程序運行期間根據需要動態分配存儲空間。
內存中供用戶使用的存儲空間,包括三部分:1.程序區,2.靜態存儲區。3.動態存儲區
數據分別存放在靜態存儲區和動態存儲區。全局變量放在靜態存儲區(初始值為0)。在程序執行時給全局變量分配存儲區,程序執行完畢釋放。在程序執行過程中他們占據固定的存儲單元,而不是動態地進行分配和釋放。
在動態存儲區存放一下變量:①。函數形式參數,②自動變量。③函數調用時的現場保護和返回地址等。這些參量系統默認的初始化值為無意義值。
一、auto變量
函數中的局部變量,未加static,則自動為auto變量。包括函數中的形參和在函數定義中的變量以及復合語句中定義的變量。這些變量在調用時自動為它們分配存儲空間。調用完成后則釋放空間。
二、static聲明的靜態變量
用static聲明的局部變量。在函數調用結束后并不釋放存儲空間。在下一次調用時,其值為上一次函數調用結束時的值。存儲于靜態存儲區,初始值為0。雖然靜態變量的值在函數調用以后仍然存在,但其他函數并不能引用它(滿足局部變量的要求)。
三、register變量
一般情況下,變量的值是存放在內存中的。當使用時,由控制器發出指令將內存中該變量的值送到運算器中。經過運算器進行運算。如果需要存數,再從運算器將數據送到內存存放。
如果一些變量使用頻繁,則可以將其存放在register中,而不必花費時間到內存中取數,存數,以節省時間。
注:只有局部自動變量和形參可以作為寄存器變量;再者一個計算機系統中的寄存器數目是有限的。
四、extern 外部變量(一個全部變量或者函數默認情況為extern)
當一個變量在另一個文件中定義時,可以在該文件中聲明為extern變量,從而可以訪問到另一個文件中定義的全局變量
file1 : int a;??????????????? //定義
file2 :extern int a;?????????????? //聲明
五、static聲明外部變量
限制一個外部變量只被本文件引用,而不可以被其他的文件引用。
file1 : int a;
file2 :static int a;
轉載于:https://www.cnblogs.com/snowhite/p/5101627.html
總結
以上是生活随笔為你收集整理的变量的存储类别以及作用空间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: http协议(二)
- 下一篇: mybatis association表