C語言基礎全局變量與局部變量教程詳解
一:局部變量與全局變量
1.1:局部變量
局部變量:在函數內部定義的變量 ,auto可加可不加
作用域:從定義到本函數結束
生命周期:從定義到該函數結束
1.2:全局變量
全局變量:在函數外部定義的變量、所以存在數據區
作用域:項目中所有文件 。
註意:在其他文件中使用需要聲明,且不可重名extern int a,extern是關鍵字,專用來聲明外部符號。
生命周期:程序開始創建到程序結束銷毀。
1.3:代碼解釋
註:當局部變量與全局變量同名時,局部變量優先使用。
1.4:const修飾的變量的修改
全局變量
直接修改 失敗
間接修改 失敗 原因放在常量區,受到保護。
局部變量
直接修改 失敗
間接修改 成功 原因放在棧上 局部變量存在棧區。
詳情見我的C語言指針基礎篇
二:靜態局部變量與靜態全局變量
2.1:static關鍵字
static :
修飾局部變量:其實是改變瞭局部變量的存儲類型,(從棧區到靜態區)。從而使得靜態的局部變量除出瞭作用域也不會銷毀。對於局部變量 其實有一個“保值”的作用。
修飾全局變量:一個全局變量在整個工程的其他文件內部都可以使用,是因為全局變量有外部鏈接屬性,當static修飾時,外部鏈接屬性就變成瞭內部鏈接屬性,使這個全局變量隻能在自己的源文件內部使用,其他文件不可使用。
2.2:靜態局部變量
靜態局部變量:在函數內部定義的變量,使用static修飾,保存一個值在靜態區(保值)。
作用域:當前函數中。
生命周期:程序開始創建到程序結束銷毀
靜態局部變量隻會初始化一次 可以多次賦值
在數據區進行存儲(靜態區)
2.3:靜態全局變量
靜態全局變量:在函數外部定義的變量,使用static修飾,可以在本文件中使用,不可再同一項目的其它文件中使用。
作用域:當前文件中。
生命周期:程序開始創建到程序結束銷毀。
註:全局變量、靜態局部變量、靜態全局變量如果未初始化系統會默認初始化值為0。但是局部變量需要初始化。
2.4:匯總
三:全局函數與靜態函數
3.1:全局函數
全局函數:沒有任何修飾的函數。
作用域:項目中所有文件(其他文件使用時也需要聲明)。
生命周期:程序開始創建到程序結束銷毀。
3.2:靜態函數
靜態函數:使用static修飾的函數。
作用域:當前文件中。
生命周期:程序開始創建到程序結束。
註:靜態函數可以和全局函數重名 ,也服從就近原則。
3.3:匯總表
以上就是C語言基礎全局變量與局部變量教程詳解的詳細內容,更多關於C語言基礎全局與局部變量的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- 深入分析C語言存儲類型與用戶空間內部分佈
- c++primer:變量和基本類型詳解
- Objective-C const常量的優雅使用方法
- C++內存模型與名稱空間概念講解
- C 語言基礎之C語言的常見關鍵字