static關鍵字的作用

2021-08-07 09:40:17 字數 1627 閱讀 5532

在c語言中;

1.static修飾區域性變數,被static修飾的區域性變數只執行一次,生命週期被改變了,隨整個程式,儲存位置在靜態常量區,初始化的時候自動被初始化為0,但是作用域被沒有發生改變。

#include 

void test()

int main()

system("pause");

return

0;}

得到的結果是1,2,3,4,5,6,7,8,9,10,而不是1,1,1,1,1,1,1,1,1,1;

在file1中定義乙個全域性變數

int a =10;
在file 2中進行申明

extern a ;

int main()

執行結果:

但是如果file1中的a用static修飾

static

int a = 10;

在file2中不做任何改變

extern a ;

int main()

但是執行就會報錯:

3.static修飾函式,改變該函式的外部鏈結屬性,該函式只可以在本檔案中被訪問,不能被其他檔案呼叫。和static修飾全域性變數一樣;

使用場景:

1.區域性變數不想被釋放的時候,比如棧環境下建立的變數,或者乙個陣列在站上被建立,但是函式被銷毀的時候還不想被釋放,就可以使用static修飾。

2.考慮到資料安全性問題,如指向在本檔案中使用的全部變數;

在c++中static關鍵字的作用:

1.c++完全相容c語言,所以在c語言static的特性在c++中也同樣適用;

2.static在修飾類的成員變數的時候,該成員變數是公有的,在記憶體中只存在乙份資料,可以實現多個物件共享乙份資料,如果改變他的值,所有物件擁有該變數的值都會被改變;

class date

; // 定義並初始化靜態成員變數

int date::scount = 0;

void test ()

3.靜態成員變數,在程式執行開始的時候分配空間,到程式執行結束才被釋放,只要類中指定了靜態成員變數,即使不例項化物件,也會為其開闢空間;

4.靜態成員變數必須在類裡申明,在類外進行初始化;如果對靜態成員變數賦初值,則編譯器預設為0;

5.靜態成員變數可以通過物件名引用,也可以通過類名引用;

int & a=date:: scount;

或者int& b= date;

6.static修飾靜態成員函式,和靜態成員變數一樣,他們屬於類的靜態成員,而不是物件的成員。

7.靜態成員變數沒有this指標;

8.靜態成員函式只能訪問之態成員函式,而不能訪問非靜態成員變數。

static關鍵字的作用

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

關鍵字static的作用

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

關鍵字Static的作用

1 修飾變數 區域性靜態變數和全域性靜態變數,都存在記憶體的靜態區 區域性靜態變數,在函式體內定義,只能在函式內部使用,同乙個檔案中的其他函式不能用。即使函式執行結束,這個靜態變數的值也不會被銷毀,函式下次使用時仍能用到這個值。全域性靜態變數,在函式外部定義,作用域 從定義處開始,到所在檔案結尾處結...