static int x=0;和static int x;x=0;為什么不一樣呢?

因為:
如果沒有static :
int x = 0;// 聲明,并初始化為0
int x; // 聲明
// 在此期間訪問會遇到隨機值(這么做應該被認為是錯誤的!)
x = 0; // 初始化
如果加了static :
【static int x=0;和static int x;x=0;為什么不一樣呢?】static int x = 0; // 聲明并初始化(此時為初始化賦值,如果這條語句出現在函數中,即便被多次調用,也只會執行一次 。)
static int x; // 聲明并使用默認初始化值
// 在此期間訪問會得到靜態變量的系統默認值(int型為0)
x = 0; // 賦值為0

static int x=0;和static int x;x=0;為什么不一樣呢?


注意事項
1、static全局變量和普通的全局變量
static全局變量在定義該變量的當前源文件內有效,在同一源程序的其它源文件中不能使用它 。而普通的全局變量在各個源文件中都是有效的(當一個源程序由多個源文件組成時) 。
2、static局部變量和普通的局部變量
static局部變量存放在靜態存儲區,其只在當前函數中起作用,但是其生存周期是直到當前程序結束為止,而局部變量存在于棧中 。
3、static函數和普通函數
static函數只在當前源文件中起作用,在其他文件中不起作用 。普通函數則可在其他源文件中調用 。

    猜你喜歡