c/c++中的關鍵字
c/c++中的關鍵字如下:
注:上表中為c++98/03中的63個關鍵字,其中紅色標註為c語言中的32個關鍵字。c++11中有73個關鍵字,新增加的10個為:alignas、alignof、char16_t、char32_t、constexpr、decltype、noexpect、nullptr、static_assert、thread_local
以下是對部分關鍵字的解釋:1、
asm
asm是乙個語句的分隔符。不能單獨出現,必須接彙編指令。一組被大括號包含的指令或一對空括號。
例:_asm
也可以在每個彙編指令前加_asm
_asm mov al,2
_asmmov dx,0xd007
_asm out al,dx2、
auto
auto關鍵字會根據初始值自動推斷變數的資料型別。不是每個編譯器都支援auto。
例:auto x = 7; //使用整數7對變數x進行初始化,可推斷x為int型。
auto y=1.234; //使用浮點數1.234對變數y進行初始化,可推斷y為double型。3、
*_cast
即 const_cast、dynamic_cast、reinterpret_cast、static_cast。
c++型別風格來性轉換。const_cast刪除const變數的屬性,方便賦值;dynamic_cast用於將乙個父類物件的指標轉換為子類物件的指標或引用;reinterpret_cast將一種型別轉換為另一種不同的型別;static_cast用於靜態轉換,任何轉換都可以用它,但他不能用於兩個不相關的型別轉換。4、
bool
、true
、false
bool即為布林型別,屬於基本型別中的整數型別,取值為真和假。true和false是具有布林型別的字面量,為右值,即表示真和假。
注:字面量:用於表達源**中乙個固定值的表示法。5、
break
、cotinue
、goto
break用於跳出for、while迴圈或switch語句。continue用於調到乙個迴圈的起始位置。goto用於無條件跳轉到函式內得標號處。一般情況不建議使用goto,風險較大。6、
switch
、case
、default
switch分支語句的起始,根據switch條件跳轉到case標號或de****t標記的分支上。7、
catch
、throw
、try
用於異常處理。try指定try塊的起始,try塊後的catch可以捕獲異常。異常由throw丟擲。throw在函式中還表示動態異常規範。8、
char
、wchar_t
表示字元型和寬字元型這些整數型別(屬於基本型別),但一般只專用於表示字元。char(和signed char、unsigned char一起)事實上定義了位元組的大小。char表示單位元組字元,wchar_t表示多位元組字元。9、
const
、volatile
const和volatile是型別修飾符,語法類似,用於變數或函式引數宣告,也可以限制非靜態成員函式。const表示唯讀型別(指定型別安全性,保護物件不被意外修改),volatile指定被修飾的物件型別的讀操作是***(因此讀取不能被隨便優化合併,適合對映i/o暫存器等)。
volatile:
a、當讀取乙個變數時,為提高訪問速度,編譯器優化時有時會先把變數讀取到乙個暫存器中,以後再取變數值時,就直接從暫存器中取值。
b、優化器在用到volatile變數時必須每次都小心地重新讀取這個變數的值,而不是使用儲存到暫存器裡的備份。
c、volatile適用於多執行緒應用中被幾個任務共享的變數。10、
struct
、class
、union
用於型別宣告。class是一般的類型別。struct在c++中是特殊的類型別,宣告中僅預設隱式的成員和基類訪問限定與class不同(struct是public,class是private)。union是聯合體型別。滿足特定條件類型別——pod struct或pod union可以和c語言中的struct和union對應相容。
注:pod型別(plain old data),plain---代表普通型別,old---代表可以與c語言相容。11、
new、
delete
new、delete屬於操作符,可以被過載。new表示向記憶體申請一段新的空間,申請失敗會丟擲異常。new會先呼叫operator new函式,再在operator new函式裡呼叫malloc函式分配空間,然後再調建構函式。delete不僅會清理資源,還會釋放空間。delete縣呼叫析構函式,其次呼叫operator delete函式,最後在operator delete函式裡面呼叫free函式。malloc申請記憶體失敗會返回空。free只是清理了資源,並沒有釋放空間。12、
do、for、
while
迴圈語句的組成部分,c和c++都支援這3種迴圈。
13、數值型別,如
int、
double
、float
、short
、long
、signed
、unsigned
signed和unsigned作為字首修飾整數型別,分別表示有符號和無符號。signed和unsigned修飾char型別,構成unsigned char和signed char,和char都不是相同的型別;不可修飾wchar_t、char16_t和char32_t。其它整數型別的signed省略或不省略,含義不變。signed或unsigned可單獨作為型別,相當於signed int和unsigned int。
double和float專用於浮點數,double表示雙精度,精度不小於float表示的浮點數。long double則是c++11指定的精度不小於double的浮點數。14、
if和else
條件語句的組成部分。if表示條件,之後else表示否定分支。15、
enum
構成列舉型別名的關鍵字。16、
explicit
該關鍵字的作用就是避免自定義型別隱式轉換為類型別。17、
export
使用該關鍵字可實現模板函式的外部呼叫。對模板型別,可以在標頭檔案中宣告模板類和模板函式;在**檔案中,使用關鍵字export來定義具體的模板類物件和模板函式;然後在其他使用者**檔案中,包含宣告標頭檔案後,就可以使用該這些物件和函式。18、
extern
當出現extern 「c」時,表示 extern 「c」之後的**按照c語言的規則去編譯;當extern修飾變數或函式時,表示其具有外部鏈結屬性,即其既可以在本模組中使用也可以在其他模組中使用。19、
friend
友元。使其不受訪問許可權控制的限制。例如,在1個類中,私有變數外部是不能直接訪問的。可是假如另外1個類或函式要訪問本類的1個私有變數時,可以把這個函式或類宣告為本類的友元函式或友元類。這樣他們就可以直接訪問本類的私有變數。20、
inline
內聯函式,在編譯時將所呼叫的函式**直接嵌入到主調函式中。各個編譯器的實現方式可能不同。21、
mutable
mutable也是為了突破const的限制而設定的。被mutable修飾的變數,將永遠處於可變的狀態,即使在乙個const函式中。22、
namespace
c++標準程式庫中的所有識別符號都被定義於乙個名為std的namespace中。命名空間除了系統定義的名字空間之外,還可以自己定義,定義命名空間用關鍵字「namespace」,使用命名空間時用符號「::」指定。23、
operator
和操作符連用,指定乙個過載了的操作符函式,比如,operator+。24、
public
、protected
、private
這三個都為許可權修飾符。public為公有的,訪問不受限制;protected為保護的,只能在本類和友元中訪問;private為私有的,只能在本類、派生類和友元中訪問。25、
register
提示編譯器盡可能把變數存入到cpu內部暫存器中。26、
return
return表示從被調函式返回到主調函式繼續執行,返回時可附帶乙個返回值,由return後面的引數指定。return通常是必要的,因為函式呼叫的時候計算結果通常是通過返回值帶出的。如果函式執行不需要返回計算結果,也經常需要返回乙個狀態碼來表示函式執行的順利與否(-1和0就是最常用的狀態碼),主調函式可以通過返回值判斷被調函式的執**況.27、
static
可修飾變數(靜態全域性變數,靜態區域性變數),也可以修飾函式和類中的成員函式。static修飾的變數的週期為整個函式的生命週期。具有靜態生存期的變數,只在函式第一次呼叫時進行初始化,在沒有顯示初始化的情況下,系統把他們初始化微0.28、
sizeof
返回型別名或表示式具有的型別對應的大小。29、
template
宣告乙個模板,模板函式,模板類等。模板的特化。30、
this
每個類成員函式都隱含了乙個this指標,用來指向類本身。this指標一般可以省略。但在賦值運算子過載的時候要顯示使用。靜態成員函式沒有this指標。31、
typedef
typedef宣告,為現有資料型別建立乙個新的名字。便於程式的閱讀和編寫。32、
virtual
宣告虛基類,虛函式。虛函式=0時,則為純虛函式,純虛函式所在的類稱為抽象類。33、
typeid
typeid是乙個操作符,返回結果為標準庫種型別的引用。34、
typename
typename關鍵字告訴編譯器把乙個特殊的名字解釋為乙個型別。35、
using
(1)、在當前檔案引入命名空間,例using namespace std;
(2)、在子類中使用,using宣告引入基類成員名稱。36、
void
特殊的"空"型別,指定函式無返回值或無引數。
C C 中volatile關鍵字
c c 中volatile關鍵字 1 沒有volatile關鍵字 include stdio.h void main void b i printf d n b getchar 然後,在 debug 版本模式執行程式,輸出結果如下 i 10 i 32 然後,在 release 版本模式執行程式,輸出...
C C 中const關鍵字
const經常被用到,所以今天總結一下const關鍵字的用法,常用的場景為修飾變數 c c 不同 修飾指標和引用,修飾函式引數,修飾函式返回值,修飾函式定義體 類 成員函式 1 修飾變數 cosnt在修飾變數時,在c和c 中是不同的。const int a 5 intarray a 在c語言中是錯誤...
C C 中extern關鍵字
extern關鍵字可置於變數或者函式前,以表示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數或函式時,在其它模組中尋找其定義。另外,extern也可用來進行鏈結指定。在介紹外部變數之前,先來看一下什麼是區域性變數。下面是乙個例子。include define maxline 1000 int ...