天天看點

static關鍵字的功能

轉載:https://blog.csdn.net/guotianqing/article/details/79828100

C語言&C++

1、局部變量

如果在一個函數内部定義了一個靜态變量,隻給它指派一次,如果它沒有初始值,預設初始值為0,第二次調用函數的時候就不在定義它(即隻定義一次)。

靜态局部變量的作用範圍是函數的作用域内。

eg:

static關鍵字的功能
static關鍵字的功能
#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)非靜态成員函數可以随意的通路所有靜态成員函數。