### 全局變量
作用整個項目中,使用的前提是需要在使用的文件中進行聲明.全局的情況下,必須要先聲明,后使用. 或者先聲明.在使用的地方后面賦值也可以.
例子1:
~~~
test.c 文件
int a = 100;
~~~
使用:
~~~
extern int a; //需要聲明
int main(void) {
printf("%d\n", a);
return EXIT_SUCCESS;
}
~~~
例子2:
~~~
extern int a;
int main(void) {
printf("%d\n", a);
return EXIT_SUCCESS;
}
int a = 200;
~~~
### 局部變量
作用范圍是,從創建到所在函數結束. 另外函數的形參也是局部變量,它們是從右到左入棧的. 這是因為自右向左入棧順序的好處就是可以動態的變化參數個數。通過堆棧分析可知,自左向右入棧方式中,最前面的參數會被壓入棧底。除非知道參數個數,否則無法通過棧指針的相對位移求得最左邊的參數。這樣就無法實現可變參數。因此,C語言采用自右向左入棧順序,主要是因為實現可變長參數形式(如:printf函數)。可變長參數主要通過第一個定參數來確定參數列表,所以自右向左入棧后,函數調用時棧頂指針指向的就是參數列表的第一個確定參數,這樣就可以了。