C語言對於學習程式設計的小夥伴來說,是一種必須學習的基礎。下面是小編為大家整理出來的有關於C/C++面試常考關鍵字總結,希望可以幫助到大家!
ic關鍵字的作用?
1)、static 申明的變數為靜態全域性變數,該變數儲存在靜態資料區,當整個程式結束時該變數才會被釋放,只是生命週期延長,作用域不受影響。
2)、static申明的變數定義時如果不初始化預設初始化為0
3)、被static修飾的變數只能作用於本檔案內,即使被extern修飾也不行
t,define的區別
1)、const修飾的變數為只讀變數,定義一個const型別的變數時必須完成初始化
2)、define意為巨集定義一個常量,給某個命名變數巨集定義一個確定的數值,在預編譯期間將會完成一個替換的動作,用巨集定義的值替換給變數名。
3)、const也可以修飾函式的引數列表以及函式的返回值,引數返回值被const修飾代表引數和返回值均不能被改變。
4)、const修飾的變數可以通過強制型別轉換轉為非const
5)、const修飾的成員變數只能在建構函式的初始化列表進行初始化。並且不能修改
6)、const修飾成員函式,該成員函式不能修改任何成員變數的值
7)、const修飾物件:該物件中所有的成員都變成只讀,而且該物件的所以成員函式都必須被const修飾。
,malloc/free的區別
(1)new/ malloc/free都是用來動態申請記憶體空間的 ,兩組必須成對使用。
(2)new/為運算子,malloc/free為庫函式需要標頭檔案
(3)new/為物件申請釋放記憶體會呼叫相應的建構函式和解構函式 malloc/free則不會
(4)new有資料型別的檢查,是型別安全的,malloc無資料型別的檢查返回值為void*
(5)new申請記憶體空間必須指明要存放的資料型別和要存放物件的數目,malloc只需要指明申請空間的`大小,可以通過顯示地強制型別轉換改變返回值的資料型別
(C++)
auto申明的變數必須初始化,程式會根據初始化的值的資料型別來自動確定該變數的資料型別。
5.指標和引用的區別
(1)指標和引用都是通過地址索引資料的。
(2)指標存放的是變數的地址,引用是變數的別名。
(3)指標也是一個變數需要佔用4個位元組(32位機器)的記憶體空間,引用不需要佔用記憶體,它只是變數的一個別名。
5.面向物件和麵向過程
面向物件:面向主要是以目標物件為研究體,這一思想的實現需要對各種不同屬性的類進行封裝,進而分析每種型別事物的屬性和功能方法,
這種思想將計算機軟體系統與外界系統一一對應,進行有針對性的研究。核心在於 (物件 + 訊息)
面向過程:C語言是面向過程的程式語言,這種思想主要是為了去實現某種功能或目標去一步步研究演算法流程,步步求精,
進而用一種最為簡捷的過程來實現最終的目標,核心為 (演算法+資料)
6. static修飾類的成員變數和成員函式
(1)static修飾的成員變數屬於這個類,不屬於某個物件。
(2)static修飾的成員變數需要在類外進行初始化。
(3)static修飾的成員函式只能訪問static修飾的成員變數,不能訪問普通成員變數。
(4)static修飾的成員函式沒有this指標。
(5)基類static修飾的成員變數繼承給子類也只存在一份,基類和派生類共享該成員。
(6)類內部可以定義靜態的類物件成員,即 可以定義static修飾的類物件
// public:static base A; (正確) public: base A; (錯誤)
ble關鍵字
被mutable修飾的成員變數,是可變的,可以修改的,即使某個物件是const型別,該成員變數也可以被修改。在被const修飾的成員函式中該變數也可以被修改。
icit:
只能修飾建構函式,防止單引數的建構函式隱式型別轉換,把一個常量轉換成一個物件。
在沒有加explicit之前,可以把一個常量賦給一個物件。
推薦建構函式前最好加explict
tile:
該關鍵字意思為易變的,因為有些時候某個變數容易被改變,所以我們需要讀取當前該變數最新的資料,不需要編譯器做優化處理。
主要用於多執行緒中。volatile提醒編譯器它後面所定義的變數隨時都有可能改變,因此編譯後的程式每次需要儲存或讀取這個變數的時候,都會直接從變數地址中讀取資料。如果沒有volatile關鍵字,則編譯器可能優化讀取和儲存,可能暫時使用暫存器中的值,如果這個變數由別的程式更新了的話,將出現讀取資料不一致的現象。