局部變量
函數(shù)中定義的變量是該函數(shù)的局部變量劳闹。它們在其他函數(shù)的語句中是不可見的院究,通常無法訪問它們。下面的程序顯示本涕,由于函數(shù)中定義的變量被隱藏业汰,所以其他函數(shù)可以擁有名稱相同但實際上互不相干的變量
int main()
{
int i = 1; //局部變量
cout << "main, i is " << i << endl;
fun2();
return 0;
}
void fun2()
{
int i = 2; // 局部變量
cout << "In fun2, i is " << i<< endl;
}
雖然有兩個名為 i 的變量,但是程序在同一時間只能“看到”其中一個菩颖,因為它們在不同的函數(shù)中样漆,只有在定義的函數(shù)正在執(zhí)行時,局部變量才存在晦闰,這稱為局部變量的生存期鲤拿。當(dāng)函數(shù)開始時巍糯,它的形參變量和它定義的任何局部變量都將在內(nèi)存中創(chuàng)建蒿柳,當(dāng)函數(shù)結(jié)束時廓八,它們被銷毀
全局變量
- 全局變量是程序中定義在所有函數(shù)(包括 main 函數(shù))之外的任何變量。全局變量的作用域是程序從變量定義到整個程序結(jié)束的部分窿冯。這意味著全局變量可以被所有定義在全局變量之后的函數(shù)訪問
全局變量在哪定義
- 一般來講骗奖,全局變量一定要定義在.c文件中,比如int g_int=0;,然后頭文件 extern int g_int 聲明!
- 如果全局變量特別多执桌,上百個鄙皇,可以專門用一個頭文件來引入這些全局變量
- 一定不能在頭文件定義變量,容易重定義Q稣酢0橐荨!
全局變量注意事項
- 全局變量使代碼調(diào)試維護(hù)變得困難膘壶。程序中的任何語句都可以更改全局變量的值错蝴,如果出錯,追蹤將是很困難的
- 全局變量使代碼可移植性變差颓芭,使用全局變量的函數(shù)通常要依賴這些變量顷锰。如果想移植這些函數(shù),則很可能必須重新設(shè)計它亡问,使它不再依賴于全局變量官紫。
- 全局變量使代碼可讀性變差。程序中的任何語句都可以更改全局變量的值州藕,因此束世,要了解任何使用了全局變量的那一部分程序,則必須了解訪問該全局變量的所有程序其他部分