關鍵字Static的作用

2021-06-26 00:37:27 字數 1257 閱讀 8256

1、修飾變數

區域性靜態變數和全域性靜態變數,都存在記憶體的靜態區

區域性靜態變數,在函式體內定義,只能在函式內部使用,同乙個檔案中的其他函式不能用。即使函式執行結束,這個靜態變數的值也不會被銷毀,函式下次使用時仍能用到這個值。

全域性靜態變數,在函式外部定義,作用域:從定義處開始,到所在檔案結尾處結束,其他檔案即使用extern宣告也無法使用。

#include "stdafx.h"

#include "iostream"

using namespace std;

static int j;

void fun1(void);

void fun2(void);

void main(void)

}void fun1(void)

void fun2(void)

靜態全域性變數在定義時需要賦初值。

靜態區域性變數定義時賦初值後,再次呼叫所在函式,不會執行定義語句。

執行結果如下:

2、修飾函式

函式前加static使函式成為靜態函式,靜態函式的作用域僅侷限於本檔案,所以靜態函式又稱為內部函式。好處是:不同的人編寫不同的函式時,不用擔心自己所定義的函式是否會與其他檔案中的函式同名。

3、c++類的靜態成員

一般情況下,類的資料成員在每個物件中都有乙個備份,因此,不同物件可以有不同的屬性值,稱為例項屬性;有些情況下,某個資料成員的值對每個物件都是相同的,它對所有物件只有唯一的乙個備份,稱為類屬性。通過靜態成員實現類屬性。

只需在宣告該靜態資料成員時以static開頭。

公有靜態資料成員可以像一般資料成員那樣,直接通過物件或在成員函式中訪問,也可以通過類名加作用域限定符來訪問。

私有和保護靜態資料成員,只能在成員函式中訪問。

靜態資料成員不屬於哪乙個物件,因此不能在建構函式或其他成員函式中進行初始化,初始化必須在類體外進行。

如:int person :: m_ncount = 0 ;

有時需要在宣告物件之前訪問私有靜態資料成員,必須定義乙個訪問靜態資料成員的靜態成員函式。

定義靜態成員函式必須以static開頭。靜態成員函式與乙個類相關聯。

靜態成員函式可以通過物件、其他成員函式和類名加運算子::呼叫。

靜態成員函式只能訪問類的靜態成員(成員變數和成員函式),或者將物件作為靜態成員函式的引數,然後通過物件訪問非靜態成員。

靜態成員函式沒有this指標,因為靜態成員函式屬於整個類,只有乙個執行例項,不需要通過物件,通過類就可以呼叫。

static關鍵字的作用

static關鍵字是c,c 中都存在的關鍵字,它主要有三種使用方式,其中前兩種在c c 語言中使用,第三種只在c 中使用 c,c 中具體細微操作不盡相同,本文以c 為準 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 下面就這三種使用方式及注意事項分別說明 一 區域性靜態變數...

關鍵字static的作用

關鍵字static的作用是什麼?這個簡單的問題很少有人能回答完全。在c語言中,關鍵字static有三個明顯的作用 1在函式體,乙個被宣告為靜態的變數在這一函式被呼叫過程中維持其值不變。2 在模組內 但在函式體外 乙個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問。它是乙個本地...

static 關鍵字的作用

1 函式體內 static 變數的作用範圍為該函式體,不同於 auto 變數,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值 2 在模組內的 static 全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問 3 在模組內的 static 函式只可被這一模組內的其它函式呼叫...