面試總結之關鍵字

2021-09-23 06:02:18 字數 1588 閱讀 3953

1.ststic:

(1).修飾函式,只能在宣告他的原始檔中使用;在大型專案中,防止不同檔案中函式重名時使用。

(2).修飾儲存型別使之成為靜態儲存型別,(修飾後的變數儲存在資料段,初值為0)分為兩種:

b.修飾區域性變數:改變生命週期,函式呼叫結束不再釋放,整個程式執行結束釋放(區域性變數儲存在棧空間,static修飾後儲存在資料段的靜態資料區);何時使用:程式應該盡量少得使用全域性變數(安全性),需要時用static修飾區域性變數替代;另外在統計時也會使用到;

2.const

(1).修飾唯讀變數,一般在傳參時使用,修飾函式形參,保證變數在函式中不被修改;

(2),const 修飾的是變數名,不是記憶體空間。故不可通過變數名修改變數的值,但是可以通過位址修改(所以const修飾的變數的說法錯誤);

(3).例:const int num=5;   

a.num++;編譯出錯;

b.  int *p=#     mun++;     //此時num值被修改為6;

(4).const為就近原則:

const int *p不變

*p不變,即內容不變,但是p的指向可以變

有const int *p=# 則p++;(對)    (*p)++;(錯)    num++;(錯)      

int const *p

*p不變

int * const p

p不變,指向不變,但內容(*p)可變

const int *const p

p和*p都不變,內容和指向都不變

3.typedef:

(1).給資料型別重新命名:

(2).提高程式可移植性,可讀性,和開發效率

a.切換平台時,減少不同平台有符號數和無符號數切換帶來的問題;減少**修改量,只需修改typedef語句;

b.隱式表明引數型別:typedef  unsigned int size_t;      int func(size_t a,size_t b)

4.extern

(1).作外部宣告;(不分配記憶體空間,extern不是語法,是一種規範),優化編譯速度

a.函式內部宣告:

int func()

....

int num; //num為全域性變數

//此種情況一般將全域性變數放在程式頂部,避免宣告

b.在其他檔案中宣告

(2).宣告函式

5.register

(1).修飾變數,將變數盡可能地儲存在cpu內部暫存器中;(盡可能:暫存器為稀缺資源,不夠使用)

(2).省去cpu從記憶體中獲取資料的時間,提高程式執行效率;

(3).何時使用:迴圈變數或頻繁被訪問的變數;

6.volatile(與硬體相關)

(1).防止編譯器內部將變數自動優化到暫存器中;例:

int i=100;

while(i>0)

//條件永遠成立,很多很多次後,編譯器預設該值不變,編譯自動優化,將值移入暫存器

//帶來後果:若之後i的值修改,編譯器中值不變,編譯出錯

extern防止這種優化

(2).一般在裸機時候使用

面試之關鍵字extern C

extern c 的作用及原因?答 1.作用是在c 語言裡面可以正確的呼叫c語言函式 原因是因為c 編譯時為了能支援函式過載以及多型的問題,會將函式名和引數聯合起來生成乙個中間的新函式名,鏈結時找的都是新的函式名,而對於c語言來說,不會產生新的函式名,所以在c 中用c語言的函式時,如果沒有特殊宣告,...

面試 static關鍵字

static可以修飾變數和函式 修飾函式 改變該函式的連線屬性,表明該函式只能在當前檔案中使用 修飾變數 全域性變數 表明該變數只能在當前檔案中使用 函式體中的區域性變數 1.延長該變數的生命週期 和成員函式的生命週期一樣 2.類似該變數具有記憶的功能 3.存放位置不同於函式體中的區域性變數 因為c...

C語言總結之 關鍵字

我記得我開始學習c語言的時候,那時候還在讀高中,我們老師就把c語言的關鍵字,全部寫在黑板上,老師說我們下面的兩節課的內容就是 把它給記下來 你還記得標準c有多少個關鍵字嗎?第一 關鍵字描述 c99 關鍵字為32個 如果你還有不認識的,還應該好好複習複習了。關鍵字 意義 auto 宣告自動變數,預設時...