局部變量
- 概念:局部變量就是定義在函數(shù), 代碼塊和函數(shù)形參列表中的變量, 我們就稱(chēng)之為局部變量
- 作用范圍:從定義的那一行開(kāi)始一直直到遇到大括號(hào)結(jié)束或者遇到return為止
- 特點(diǎn):
相同作用域范圍內(nèi)不能出現(xiàn)同名的局部變量
不同作用域范圍內(nèi)出現(xiàn)同名的局部變量, 內(nèi)部的局部變量會(huì)覆蓋外部的局部變量
- 注意:局部變量沒(méi)有固定的初始化值, 如果沒(méi)有對(duì)局部變量進(jìn)行初始化, 那么局部變量中是一些隨機(jī)的值, 所以在開(kāi)發(fā)中千萬(wàn)不要使用未初始化的局部變量
- 存儲(chǔ)位置:
局部變量存儲(chǔ)在棧中, 當(dāng)作用域結(jié)束系統(tǒng)會(huì)自動(dòng)釋放棧中的局部變量
全局變量
- 概念: 寫(xiě)在函數(shù),代碼塊,形參列表外的變量, 我們就稱(chēng)之為全局變量
- 作用范圍: 從定義的那一行開(kāi)始一直直到文件末尾(暫時(shí)這樣認(rèn)為)
- 特點(diǎn):
全局變量和局部變量可以同名
如果存在和全局變量同名的局部變量, 那么局部變量會(huì)覆蓋全局變量
- 注意:
全局變量如果沒(méi)有進(jìn)行初始化, 那么系統(tǒng)默認(rèn)會(huì)將全局變量初始化為0
- 存儲(chǔ)位置:
全局變量存儲(chǔ)在靜態(tài)區(qū)中, 他會(huì)隨著程序的啟動(dòng)而創(chuàng)建, 隨著程序的結(jié)束而結(jié)束
#include <stdio.h>
void test();
//void test(int v1);
int num; // 全局變量 num = 0;
int main(int argc, const char * argv[]) {
/*
int num = 10;
{
// int a = 55;
int num = 998;
printf("num = %i\n", num);
}
// a = 100;
// int num = 20;
int b;
printf("b = %i\n", b);
*/
/*
int num; // 局部變量
num = 10; // 訪問(wèn)的是局部變量num
printf("num = %i\n", num); // 10
test();
printf("num = %i\n", num); // 10
*/
test();
test();
return 0;
}
//int num;
void test()
{
// printf("num = %i\n", num);
// num = 998; // 訪問(wèn)的是全局變量
num++; // 1 2
printf("num = %i\n", num);
}
//void test(int v1)
//{
//// printf("num = %i\n", num);
// int v1 = 55;
//}