面試常用:c關鍵字
static 靜態的
1 定義乙個區域性變數,該變數在定義時只進行一次初始化,以後每次呼叫它所在的函式,其值都會保持上一次呼叫的結果
它所在的空間不會被釋放。
2 被static修飾的全域性變數,則只能在它所在的c原始檔中使用,其他檔案不能呼叫(內部全域性變數)
3 被static修飾的函式,只能在該函式所在的c原始檔中被呼叫,其它檔案不能呼叫(內部函式)
const 常變數:被const關鍵字宣告的變數,其值不能被改變
char *const p; //指標變數p不可改變,但是它指向的位址裡面的值可變
char comst *p; const char *p; //指標變數p可以改變,但是他所指向的位址裡面的值不能改變
const char * const p; //p的位址不可改變,裡面的值也不能改變
volatile :隨時會改變的 被volatile修飾的變數或暫存器會意想不到的發生改變
1 某些變數或暫存器(如狀態暫存器)可能會受硬體影響
2在多執行緒任務中,被其它執行緒修改(共享記憶體段)
3乙個在中斷服務中使用到的全域性變數
4編譯器會對c程式進行優化
為了保證程式不被優化,保證cpu取到的資料是最新的(即提醒cpu每次都必須到記憶體中取出變數
當前的值而不是取出cache或者暫存器中的備份),使用該關鍵字修飾,如
int *p;
*p=1 ; *p=2; //編譯時,編譯器會對語句進行優化,會直接優化為
int *p; *p=2; //為了保證上面的語句不被優化,加volatile修飾變數:
int * volatile p;
extern :外部的
1 想要呼叫別的c原始檔中的某乙個全域性變數,可以使用該關鍵字在該檔案中修飾宣告該變數即可呼叫(前提是該變數沒有被static修飾)
該型別的變數也是一直佔著記憶體不釋放
2 想要呼叫別的c原始檔中的某乙個函式,可以使用該關鍵字在該檔案中修飾宣告該函式即可呼叫(前提是該函式沒有被tatic修飾)
如:extern char var; extern void fun();
register :暫存器的
被這個關鍵字修飾的變數,建議編譯器將該變數在使用時放到cpu內部暫存器中,以提高執行效率
注意:該關鍵字只是建議,到底有沒有將變數放到暫存器無從得知。一般使用在迴圈次數比較多的地方
在使用時才分配記憶體,用完即釋放
register long i=3000
類的幾個關鍵字
1 成員變數和區域性變數的區別 1 區域性變數 在方法中或者方法上 區域性變數在棧記憶體中 區域性變數隨著方法的結束而消失 區域性變數在使用前必須有值。2 成員變數 在類中方法外 在堆記憶體中 隨著物件的生成而出現,隨著物件的消失而消失 在初始化時可以不賦值。2 匿名物件 1 匿名物件一般只用一次,...
java的幾個關鍵字
public protected private 預設 均可修飾方法 屬性 protected不可以修飾類 1.public 使用範圍最廣,可以在其他包 package 內,呼叫這個類的public方法和屬性或者繼承 繼承中,子類重寫父類的public方法,範圍不能小於public。2.protec...
幾個關鍵字的小結
幾個常見關鍵字的用法小結 1.public private protected 它們用來修飾類 方法 屬性 使被修飾的類 方法 屬性的被呼叫範圍得到乙個限制。public是公開性最高的關鍵字 當它修飾乙個類的時候,被修飾的類可以被同乙個工程中的所有類的物件訪問 如工程a中有乙個類s,那麼對於a的任意...