全域性變數
一、全域性變數
全域性變數的初始化
1.沒有做初始化的全域性變數會得到0值
2.指標會得到NULL值
3.只能用編譯時刻已知的值來初始化全域性變數
4.它們的初始化發生在main函式之前
全域性變數的隱藏
如果在某個函式中定義了和全域性變數同名的變數,那麼全域性變數將被隱藏
小範圍的本地變數將隱藏大範圍的全域性變數
二、靜態本地變數
即:能在函式結束後繼續保留本值的本地變數
#include<stdio.h>
int gall=12;//全域性變數
int f(void);
int main()
{
f();
f();
f();
return 0;
}
int f(void)
{
int all=1;
printf("in _f_ all=%d\n",all);
all+=2;
printf("agn in _f_ all=%d\n",all);
return all;
}
那如果用static 會是什麼樣的結果呢
#include<stdio.h>
int gall=12;//全域性變數
int f(void);
int main()
{
f();
f();
f();
return 0;
}
int f(void)
{
int static all=1;
printf("in _f_ all=%d\n",all);
all+=2;
printf("agn in _f_ all=%d\n",all);
return all;
}
通過這兩個程式執行結果的差別就能知道static的作用了。
#include<stdio.h>
int gall=12;//全域性變數
int main()
{
int k=0;
static int all=1;//靜態本地變數
printf("&gall=%p\n",&gall);
printf("&all =%p\n",&all);
printf("&k =%p\n",&k);
return 0;
}
我們可以看到 gall和all在記憶體中是挨著存放的。而本地變數k則跟他們不在一塊
所以我們可以知道
1.靜態本地變數實際上是特殊的全域性變數
2.他們位於相同的記憶體區域。
3.靜態本地變數具有全域性的生存期,函式內的區域性作用域。
4.static在這裡的意思是區域性作用域(本地可訪問)
相關文章
- 靜態全域性變數和全域性變數變數
- node 全域性物件和全域性變數物件變數
- 全域性變數與區域性變數變數
- 區域性變數和全域性變數變數
- 全域性 DOM 變數變數
- lua全域性變數變數
- C語言區域性變數、全域性變數、靜態區域性變數、靜態全域性變數C語言變數
- angular中定義全域性變數及全域性變數的使用Angular變數
- Java區域性變數與全域性變數Java變數
- java 全域性變數和區域性變數Java變數
- JavaScript —— 區域性變數和全域性變數JavaScript變數
- jmeter全域性變數和區域性變數JMeter變數
- 【c】全域性變數與區域性變數變數
- vue定義全域性變數和全域性方法Vue變數
- js宣告全域性變數JS變數
- python全域性變數Python變數
- SQL Server 全域性變數SQLServer變數
- python全域性變數與區域性變數Python變數
- JavaScript五:全域性變數&區域性變數;運算子JavaScript變數
- python全域性變數和區域性變數, globalPython變數
- PHP 超級全域性變數PHP變數
- 全域性DOM變數的坑變數
- 少用全域性變數的原因變數
- DB2_全域性變數DB2變數
- SQLServer全域性變數詳介SQLServer變數
- android使用全域性變數Android變數
- 【SQL Server】常用全域性變數SQLServer變數
- less 全域性變數使用 引用變數
- iOS 靜變數static、全域性變數extern、區域性變數、例項變數iOS變數
- ODI第9節-變數(三):全域性變數變數
- Python中的全域性變數和區域性變數Python變數
- js-js的全域性變數和區域性變數JS變數
- Python全域性變數與區域性變數詳解Python變數
- 詳解python 區域性變數與全域性變數Python變數
- 全域性變數和靜態變數的區別變數
- PHP超全域性變數$_SERVER分析PHP變數Server
- javascript全域性變數的使用注意JavaScript變數
- mac配置全域性環境變數Mac變數