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