// 區域性變數是被auto修飾的(在c++11中auto又有了新的含義,後面專門寫一篇文章介紹)
auto
int a =0;
auto
float f =
9.7f
;auto
double b =
10.8
;
注意
結構體內的成員變數不是區域性變數的意思
函式的形參也是區域性變數,函式執行結束,形參的生命週期(或作用域)就結束了,這與for迴圈等結構中定義的區域性變數相似,所以函式不能返回區域性變數的位址,函式執行結束,區域性變數被釋放,返回的位址成為了野指標
不同的作用域內可以定義相同名字的變數,若作用域巢狀,名字相同的變數在小作用域內定義的變數在小作用域內起作用,大作用域內定義的變數在大作用域內起作用,兩者沒有任何關係
void
func()
cout << i << endl;
}// 執行結果:10 3 10
extern
int n1 =10;
// 完整的定義乙個全域性變數
int n2 =9;
// 省略 extern 儲存型別說明符
int n3;
// 省略 extern 儲存型別說明符,且未初始化,os自動初始化為0
void
func()
// 執行結果:10 9 0
注意
區域性位置宣告全域性變數,不可以省略儲存型別說明符extern,特別需要注意的一點是在區域性位置宣告全域性變數時,不能對全域性變數進行初始化操作
// *****= 測試 *****=
// file: a.cpp
#include
using
namespace std;
void
func()
// file: b.cpp
#include
using
namespace std;
int n =9;
void
func()
;int
main()
// 執行結果:9
在多檔案程式設計中,使用其他檔案中定義的全域性變數需要加上儲存型別說明符 extern
// *****= 測試 *****=
// file: a.cpp
#include
using
namespace std;
extern
int n;
void
func()
// file: b.cpp
#include
using
namespace std;
int n =9;
void
func()
;int
main()
// 執行結果:9
如果未特殊說明,以上測試均是在win10 vs2017 64bit編譯器下進行的 C 區域性變數和全域性變數
在乙個函式內部定義的變數是內部變數,它只在本函式範圍內有效,也就是說只有在本函式內才能使用它們,在此函式以外是不能使用這些變數的。同樣,在復合語句中定義的變數只在本復合語句範圍內有效。這稱為區域性變數 local variable 如 對區域性變數的一些說明 1 主函式main中定義的變數 m,n ...
c 全域性變數 區域性變數
全域性變數即在函式外宣告的變數,區域性變數即在函式內部宣告的變數,例如 include float num 3.14 乙個名為num的全域性變數 void main float num 2.45 乙個名為num的區域性變數 cout3.14 當區域性變數和全域性變數同名時,在區域性變數作用域內使用該...
c 全域性變數,區域性變數
區域性變數又稱內部變數,是函式內部定義的變數,作用域在定義其的函式內部 全域性變數又稱外部變數,作用於是從其定義開始一直到源程式結束 不論是全域性變數還是區域性變數都是乙個空間上的範圍,即作用域 相對於變數的空間範圍,靜態和動態變數則指乙個時間上的範圍,所謂靜態變數就是在定義時分配固定儲存單元,知道...