轉載:https://blog.csdn.net/guotianqing/article/details/79828100
C語言&C++
1、局部變量
如果在一個函數内部定義了一個靜态變量,隻給它指派一次,如果它沒有初始值,預設初始值為0,第二次調用函數的時候就不在定義它(即隻定義一次)。
靜态局部變量的作用範圍是函數的作用域内。
eg:

#include<stdio.h>
void f()
{
static int num=1;
printf("%d ",num++);
}
int main(void)
{
int i,n=3;
while(n--)
{
f();
}
return 0;
}
View Code
運作結果:1 2 3
2、全局變量
如果定義在函數外面作為全局變量,編譯器會對它初始化,
這個變量僅對目前檔案可見,其他檔案不可通路,但其他檔案可以定義與它相同名稱的變量(作用:避免沖突)
3、函數
(1)靜态函數隻在聲明它的檔案中可用,其他檔案不可用
(2)不同的檔案可以定義相同的靜态檔案名稱,互相不影響。
面向對象:
1、靜态資料成員:
(1)是全局變量,不能再類定義時聲明
(2)靜态資料成員是類的成員,對所有類的成員都可見
(3)遵從public,private,protect的規則
(4)通路方式:<類對象名>.<靜态資料成員名> 或 <類類型名>::<靜态資料成員名>
2、靜态成員函數
(1)屬于整個類,不屬于某一個成員函數
(2)沒有this指針,無法通路非靜态成員函數
(3)出現在類外的成員函數不能用static
(4)非靜态成員函數可以随意的通路所有靜态成員函數。