全域性變數
一、全域性變數
全域性變數的初始化
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在這裡的意思是區域性作用域(本地可訪問)
相關文章
- 全域性變數與區域性變數變數
- 區域性變數和全域性變數變數
- 全域性 DOM 變數變數
- Java區域性變數與全域性變數Java變數
- java 全域性變數和區域性變數Java變數
- jmeter全域性變數和區域性變數JMeter變數
- 【c】全域性變數與區域性變數變數
- vue定義全域性變數和全域性方法Vue變數
- js宣告全域性變數JS變數
- Python中的全域性變數和區域性變數Python變數
- JavaScript五:全域性變數&區域性變數;運算子JavaScript變數
- 全域性DOM變數的坑變數
- PHP 超級全域性變數PHP變數
- less 全域性變數使用 引用變數
- 【SQL Server】常用全域性變數SQLServer變數
- js-js的全域性變數和區域性變數JS變數
- mac配置全域性環境變數Mac變數
- process node.js全域性變數Node.js變數
- QT 全域性變數使用方法QT變數
- PHP超全域性變數$_SERVER分析PHP變數Server
- javascript全域性變數的使用注意JavaScript變數
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- golang變數作用域問題-避免使用全域性變數Golang變數
- vue-cli 配置 sass 全域性變數Vue變數
- shell全域性(系統)環境變數變數
- Python定義全域性變數的用法Python變數
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數
- 簡述SHELL全域性環境變數與局變環境變數變數
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- Vue Cli3.0 全域性引入 less 變數Vue變數
- python多執行緒-共享全域性變數Python執行緒變數
- 變數的分類(臨時(本地)變數、環境變數、全域性變數和系統變數)變數
- 介面測試實戰--postman全域性變數和環境變數Postman變數
- 表單驗證,為避免全域性汙染,少定義全域性變數寫法變數
- 函式之定義及全域性變數&區域性變數&風溼理論函式變數
- Python 關鍵字global全域性變數詳解Python變數
- nodejs在typescript專案中申明全域性變數NodeJSTypeScript變數
- 多執行緒中,區域性變數與全域性變數哪個比較安全?執行緒變數