您好,登錄后才能下訂單哦!
這篇文章主要介紹“C語言局部變量與全局變量怎么定義”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“C語言局部變量與全局變量怎么定義”文章能幫助大家解決問題。
局部變量與全局變量
一般來說,C語言程序中可以在程序中以下地方定義變量:
(1) 函數體的開頭部分。
(2) 函數頭部中的形式參數變量。
(3) 函數體內部的復合語句中。
(4) 函數的外部。
根據變量在程序中定義位置,可以將變量分為“局部變量”和“全局變量”
在函數內部定義的變量稱為局部變量。函數體開頭部分、函數頭中的形式參數和函數體內復合語句中定義的變量都屬于局部變量。
局部變量的作用域是從該變量的定義語句開始到包含該變量定義語句的最內層的右大括號結束為止。
源程序文件中在函數外部定義的變量稱為全局變量,全局變量作用域的起點是變量定義的位置,全局變量作用域的終點中其所在的源程序文件的結束。
變量的存儲方式
C語言中,供用戶程序運行使用的內存空間分為三個部分:程序區、靜態存儲區和動態存儲區。
(1) 程序區存放可執行的程序指令。
(2) 靜態存儲區存放程序運行期間占用固定內存單元的變量,包括程序中定義的全局變量、靜態局部變量(static)等。
(3) 動態存儲區存放程序運行期間根據需要動態分配存儲單元的變量,包括程序中定義的非static的局部變量、函數的形式參數等。
C語言中變量的存儲類別具體可以分為4種:自動(auto)、靜態(static)、寄存器(register)和外部(extern)。
局部變量的存儲類別
局部變量有三種存儲類型:自動(auto)、靜態(static)和寄存器(register)。
1. 自動局部變量
函數中的局部變量,如果沒有特別聲明為static(靜態)存儲類別,都是由系統動態地分配和釋放內存空間,變量存放在動態存儲區中,稱為自動變量。函數中的形參也屬于自動變量。
2. 靜態局部變量
如果希望函數中局部變量的值在函數調用結束后仍然保留原來的值,即系統不釋放變量占用的內存空間,在下一次函數調用時,該變量保持上一次函數調用結束后的值。此時應該使用static關鍵字把局部變量說明成靜態存儲方式。
3. 寄存器變量
一般情況下,變量存放在內存空間中,當程序中使用變量時,由控制器發出的指令把數據從內存中變量的值送到運算器,經過運算器產生的結果,如果需要保存,再從運算器送到內存。如果程序中某些變量使用非常頻繁,那么數據的內存訪問的時間就會影響程序運行的效率。
C語言允許將使用頻繁的變量存放在寄存器中,以提高程序的運行效率。
全局變量的存儲類別
全局變量是存放在靜態存儲區的,它們的生命期是固定的,是程序運行的整個過程。全局變量主要有2種存儲類別:外部(extern)和靜態(static)。
1. 外部全局變量
如果要在一個源程序文件中使用其它源程序文件中定義的全局變量,則需要使用關鍵字extern說明。
備注:是使用已定義的全局變量,而不是定義新的全局變量,具體見書P135示例。
2. 靜態全局變量
程序設計中如果希望某個源程序文件中定義的全局變量只能在本文件中使用,不能在其它源程序中使用,則可以在定義全局變量時加上static關鍵字說明。
關于“C語言局部變量與全局變量怎么定義”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。