C 面試常問問題積累 《關鍵字篇》

2021-09-25 13:31:17 字數 1827 閱讀 4766

一.extern關鍵字的作用是什麼?

extern關鍵字置於變數或者函式前,用於表示變數或者函式定義在別的檔案裡,提示編譯器遇到此變數或者函式時,到別的模組中尋找變數和函式的定義。它的作用主要有兩個:

1.當它與「c」一起連用的時候,eg,extern "c" void fun(int a,int b), 則是在告訴編譯器這個函式需要按照c的規矩去翻譯,而不是c++的規矩去翻譯。

2.當它在一些變數或者函式的前面時,例如  extern int a;  extern int max(int a,int b),它的作用就是宣告變數或者函式的作用範圍的關鍵字,其宣告的變數或者函式可以在本模組中使用也可以在其他模組中使用。

真理:只在標頭檔案中做宣告

二.static關鍵字的作用

1.隱藏功能:在同時編譯多個檔案時,所有未加static關鍵字的全域性變數和函式都具有全域性可見性,其他原始檔也可以訪問。如果加了static關鍵字,就會對其他原始檔隱藏。利用這一特性,就可以在其他檔案中定義同名函式和變數了,不用擔心命名衝突。

2.保持變數內容的持久:儲存在靜態資料區內的變數會在程式剛開始執行的時候就完成初始化,也是唯一的一次初始化。如果作為static區域性變數在函式內定義,它的生存期為整個源程式,但其作用域與自動變數相同,只能在定義該變數的函式內部使用該變數,退出函式後,變數繼續存在,但是不能使用它。

3.預設初始化為0:在靜態資料區,記憶體中所有的位元組預設值都是0x00,某些時候這一特點可以減少程式設計師的工作量。因為static變數儲存在靜態資料區,所以其預設初始化值為0.

一句話總結:首先static的最主要功能是隱藏,其次因為static變數存放在靜態儲存區,所以它具備永續性和預設值為0.

三.const關鍵字的作用:有時候我們希望定義這樣一種變數,它的值不能被改變。為了滿足這一要求,可以用const關鍵字來對變數加以限定。(const 物件必須進行初始化,同時也可以用非const物件對const物件進行初始化)。

1.預設情況下,const物件僅在檔案內有效。如果想在多個檔案之間共享const物件,必須在變數定義之前加上extern關鍵字。

2.const的引用:對const的引用可能引用乙個並非const的物件。

3.指向常量的指標:不能用於改變其所指物件的值。要想存放常量物件的位址,只能使用指向常量的指標。指標的型別必須和所指物件的型別一致,但是有兩個例外。第一種例外情況是允許令乙個指向常量的指標指向乙個非常量物件。指向常量的指標僅僅要求不能通過該指標改變物件的值,而沒有規定那個物件的值不能通過其他途徑改變。

4.const 指標:指標是物件而引用不是,因此就像其他物件型別一樣,允許把指標本身定為常量,常量指標必須進行初始化,而且一旦初始化完成,則它的值就不能再改變了。把*放在const關鍵字之前用以說明是乙個常量,這樣的書寫形式隱含著一層意味,即不變的是指標本身的值而非指向的那個值。

四.auto關鍵字的作用

在c++11中auto的作用是:c++11新標準引入了auto型別說明符,用它就能讓編譯器替我們去分析表示式所屬型別。

Mysql面試常問問題

資料庫基礎知識 1 為什麼要使用資料庫 2 什麼是sql?3 什麼是mysql?4 資料庫三大正規化是什麼 5 mysql有關許可權的表都有哪幾個 6 mysql的binlog有有幾種錄入格式?分別有什麼區別?資料型別 1 mysql有哪些資料型別 引擎1 mysql儲存引擎myisam與innod...

php 面試常問問題

1.看看簡歷,會問一些過去做的專案的使用者量 pv 吞吐量 相關難點和解決方法等 2.資料庫設計經驗,為什麼進行分表?分庫?一般多少資料量開始分表?分庫?分庫分表的目的?什麼是資料庫垂直拆分?水平拆分?分割槽等等?可以舉例說明 3.資料庫優化有哪些?分別需要注意什麼?4.web開發方面會遇到哪些快取...

iOS 面試常問問題總結

1.除了mvc模式你還熟悉什麼設計模式 模式 當乙個類的某些功能需要由別的類實現,但是又不確定具體是哪個類實現的 單例模式 確保程式執行期,某個類只有乙份例項,用於進行資源共享 工廠模式 工廠模式建立的例項,多與proxy模式配合,建立可替代的類,一般用於基礎控制項的建立 觀察者模式 一般為mode...