static關鍵字(C C 語言中的作用)

2022-06-02 13:51:12 字數 2163 閱讀 7870

類中靜態成員注意事項

(1)類中靜態成員分為 靜態資料成員 和 靜態成員函式。

(2)靜態資料成員與全域性物件的區別:

<1> static成員的名字是在類的作用域中,可以避免命名衝突。

<2> static資料成員可以是私有成員,而全域性物件不可以。

(3)static成員遵循正常的訪問規則。

(4)類中static資料成員獨立於該類的任意物件而存在。

(5)在成員宣告前加上static關鍵字將成員設為所謂的靜態。

(6)類中static成員函式與一般的普通成員函式最大的區別在於不存在this指標。因為這個函式是與類相關的函式,而不是與某乙個物件相關。

(7)宣告函式時在前面加關鍵字static,當在類外實現這個函式時,不允許加關鍵字。

(8)可以通過作用域操作符直接呼叫static成員函式。或者類的物件,引用或指向類物件的指標間接的呼叫static函式。

(9)static成員不是任何物件的組成部分,所以static成員函式不能被宣告為const。(函式宣告為const是對函式this指標的進一步限定,而

static成員函式本身就不存在this指標,所以再加const是沒有意義的)

(10)static成員函式不可以被宣告為虛函式。虛函式是為實現多型的一種特殊的成員函式,因為static函式沒有this指標,因此是沒有意義的。

(11)static資料成員可以宣告為任意型別:常量、引用、陣列、類型別等等。

(12)static資料成員必須在類的定義體外部定義。

1

classb2

;4classa5

;

2、靜態成員函式宣告及訪問,相關示例**如下:

1 #include 2

using

namespace

std;34

class

teststatic512

13static

void print(int

nvalue)

1418

};19

20void

main()

2144

/*run out

45teststatic::print(1)

46teststatic::normal()

47teststatic::print(100)

48teststatic::print(2)

49teststatic::normal()

50teststatic::print(100)

51teststatic::print(3)

52teststatic::normal()

53teststatic::print(100)

54teststatic::print(4)

55teststatic::print(5)

56請按任意鍵繼續. . .

57*/

c語言中static的作用

第一、修飾區域性變數。static修飾的區域性變數只執行一次初始化,且延長了區域性變數的生命週期,直到程式執行結束以後才釋放。

static修飾的區域性變數存放在全域性資料區的靜態變數區。初始化的時預設值為0;

第二、修飾全域性變數。static修飾的全域性變數只能在本檔案中訪問,不能在其它檔案中訪問,即便是加extern外部宣告也不可以。

第三、修飾函式。若static修飾乙個函式,則這個函式的只能在本檔案中呼叫,不能在其他檔案被呼叫。即具有檔案作用域。

(1)不想被釋放的時候,可以使用static修飾。比如修飾函式中存放在棧空間的陣列。如果不想讓這個陣列在函式呼叫結束釋放可以使用static修飾。

(2)考慮到資料安全性(當想要使用全域性變數的時候應該先考慮使用static)。

綜上所述,

從更深層次思考,不加static意味著external鏈結屬性,可能在其它編譯單元有定義,或被其它編譯單元使用,由於某種需要,一般會有乙個跳轉表。

而static只在本編譯單元用,所以沒有跳轉表。也就是說,不加static的會執行乙個jmp然後再到函式體**,而static的會直接執行。

為什麼要有乙個表呢?正是實現多編譯單元的相互作用。比如函式在a中定義,在b中呼叫,於是呼叫的**只需要走到跳轉表就行。

good  good  study, day  day  up.

順序  選擇  迴圈  總結

C語言中的static關鍵字

c語言中的變數 1.自動變數。變數在執行到他的塊尾時就超出了作用域,它在堆疊上分配的記憶體會被釋放,以供另乙個函式使用。它們是在宣告時自動建立的,在程式退出宣告它的塊後自動刪除。2.全域性變數。可以在任意位置訪問,它的宣告方式和一般變數相同,但是它的位置非常重要,這個位置決定了變數是否為全域性變數。...

C語言中的static關鍵字

static關鍵字,意為靜態。靜態區域性變數void add test 靜態全域性變數 c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化...

C C 語言 static關鍵字的用法

c c 中static關鍵字可以從以下三個方面理解 static int a 本質意義為static修飾的變數被分配在靜態儲存區,不是在棧上,也不是在堆上。所以有以下應用場景。1,c語言中,會在初次執行的時候進行初始化,整個程式執行期間都不釋放。如果變數為c 類物件,則在main 之前執行建構函式,...