C C 中的static關鍵字

2021-09-27 13:14:08 字數 597 閱讀 8338

原理:預設的變數和函式名在編譯成彙編**.s檔案後,會有.globl func_name,.globl指示告訴彙編器,func_name這個符號要被鏈結器用到(彙編檔案在經過彙編器處理成二進位制的.o檔案時,符號會被變數或函式實際的位址值代替),所以要在目標檔案的符號表中標記它是乙個全域性符號。如果乙個變數沒有用.globl宣告,就表示這個符號不會被鏈結器用到。而static關鍵字修飾的符號在編譯成彙編**.s檔案時,就不會被globl宣告,因此不會參與後續鏈結,也就不會被其他程式檔案呼叫到。

#include

using

namespace std;

void

test()

int main

輸出:2

00c90008

300c90008

400c90008

500c90008

//可見位址只有乙個

因為非靜態成員變數和函式在類成員函式中呼叫時,都是由形參中隱含乙個指向當前例項物件的this指標來呼叫。然而靜態成員函式沒有這個this形參。

C C 中的static關鍵字

關鍵字extern和static用來說明具有靜態儲存期的變數和函式。用static宣告的區域性變數只能被定義該變數的函式所識別,但是不同於自動變數的是,static變數在其函式被呼叫退出後,仍保留其值。下次函式被呼叫時,可以訪問最近一次被修改後的值。static變數的宣告方法如下 static in...

C C 中的static關鍵字

static的用法主要分為兩大類,一種是在c語言中的用法,還有就是c 在類中的用法。2.在c 中 定義靜態全域性變數就是在全域性變數前加上 static 關鍵字 include static int a 10 這是靜態全域性變數 靜態全域性資料的特點 1 靜態全域性變數就在全域性資料段分配記憶體。2...

C C 的static關鍵字

static主要有三個作用 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 前兩種c和c 都有,第三種僅在c 中有,下面分別作以下介紹 一 區域性靜態變數 在c c 中,區域性變數按照儲存形式可分為三種auto,static,register。其中register不常用到,下...