C C 中的static的聯絡和區別

2022-09-01 18:30:13 字數 1129 閱讀 8439

c中的static

在程序開始執行時初始化,c中static修飾變數和函式

靜態變數

儲存於全域性變數區

靜態區域性變數:程序的執行過程中,函式退出不被銷毀

靜態全域性變數:只能被本檔案的函式呼叫訪問,對其他原始檔不可見

靜態函式:只在宣告它的檔案中可見,對其他原始檔不可見。定義時不加static

作用總結:

1、隱藏。對其他原始檔不可見。與其他檔案的同名函式或變數不存在衝突問題,降低模組間的耦合度。

2、永續性,在程序執行過程中不釋放

3、如果不賦初始值,初始化預設值為0;

c++中的static

c++中的static面向過程的和c中的使用相同。

物件導向中static的使用:靜態資料成員和靜態成員函式

靜態資料成員:同一類的所有例項物件共用同乙個靜態資料成員,不能在宣告時定義,定義時分配空間

定義格式:  <資料型別><類名>::<靜態資料成員名>=<值>

訪問格式:<類物件名>.<靜態資料成員名> 或 <類名>::<靜態資料成員名>

同全域性變數相比,使用靜態資料成員有兩個優勢:

靜態資料成員沒有進入程式的全域性名字空間,因此不存在與程式中其它全域性名字衝突的可能性;

可以實現資訊隱藏。靜態資料成員可以是private成員,而全域性變數不能;

靜態成員函式:

靜態成員函式由於不是與任何的物件相聯絡,因此它不具有this指標。從這個意義上講,它無法訪問屬於類物件的非靜態資料成員,也無法訪問非靜態成員函式,它只能呼叫其餘的靜態成員函式。

靜態成員之間可以相互訪問,包括靜態成員函式訪問靜態資料成員和訪問靜態成員函式;

非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員;

靜態成員函式不能訪問非靜態成員函式和非靜態資料成員;

由於沒有this指標的額外開銷,因此靜態成員函式與類的全域性函式相比速度上會有少許的增長;

呼叫靜態成員函式,可以用成員訪問操作符(.)和(->)為乙個類的物件或指向類物件的指標呼叫靜態成員函式,也可以直接使用如下格式:

<類名>::<靜態成員函式名>(<參數列>)

ps: 可重入函式(也可以說是可**的):只要輸入資料相同就應產生相同的輸出。

因此,一般包含static變數的函式都是不可重入的。

C C 中Static和Const的作用

尊重 一 const的作用 const是c語言的一種關鍵字,它所限定的變數是不允許被改變的,從而起到保護的作用!const關鍵字可以用於修飾變數,引數,返回值,甚至函式體。const可以提高程式的健壯性,減少程式出錯。一 const用於定義常量和修飾變數 當定義某個變數時,用const修飾,則該變數...

C C 中static的用法

c c 的static有兩種用法 面向過程程式設計中的static和物件導向程式設計中的static。前者應用於普通變數和函式,不涉及類 後者主要說明static在類中的作用。一 面向過程設計中的static 1 靜態全域性變數 在全域性變數前,加上關鍵字static,該變數就被定義成為乙個靜態全域...

C C 中static的使用

最近在看 c 總是不斷的遇到關鍵字static,對此關鍵字不是很了解,每次遇到都有些困惑,不知道此處為啥要用static,今日通過網上一些資料,仔細認真的了解了 static 的用法。static的在好多程式語言中存在,那他在 c 中出現的原因是什麼呢?換句話說就是在 c 中什麼時候需要使用到 st...