C語言中32個關(guān)鍵字詳解

C語言中32個關(guān)鍵字詳解

由 ANSI 標(biāo)準(zhǔn)定義的 C 語言關(guān)鍵字共32個蔚晨,根據(jù)關(guān)鍵字的作用,可以將關(guān)鍵字分為數(shù)據(jù)類型關(guān)鍵字和流程控制關(guān)鍵字兩大類肛循。

一铭腕、數(shù)據(jù)類型關(guān)鍵字

A 基本數(shù)據(jù)類型(5個)

void:聲明函數(shù)無返回值或無參數(shù),聲明無類型指針多糠,顯示丟棄去處結(jié)果

char:字符型類型數(shù)據(jù)累舷,屬于整型數(shù)據(jù)的一種

int:整型數(shù)據(jù),通常為編譯器指定的機(jī)器字長

float:單精度浮點(diǎn)數(shù)據(jù)夹孔,屬于浮點(diǎn)數(shù)據(jù)的一種

double:雙精度浮點(diǎn)數(shù)據(jù)被盈,屬于浮點(diǎn)數(shù)據(jù)的一種

B 類型修飾關(guān)鍵字(4個)

short:修飾 int,短整型數(shù)據(jù)析蝴,可省略被修飾的 int

long:修飾 int害捕,長整形數(shù)據(jù),可省略被修飾的 int

signed:修飾整型數(shù)據(jù)闷畸,有符號數(shù)據(jù)類型

unsigned:修飾整型數(shù)據(jù)尝盼,無符號數(shù)據(jù)類型

C 復(fù)雜類型關(guān)鍵字(5個)

struct:結(jié)構(gòu)體聲明

union:共用體聲明

enum:枚舉聲明

typedef:聲明類型別名

sizeof:得到特定類型或特定類型、變量的大小

D 存儲級別關(guān)鍵字(6個)

auto:指定為自動亦是佑菩,由編譯器自動分配及釋放盾沫。通常在棧上分配

static:指定為靜態(tài)變量,分配在靜態(tài)變量區(qū)殿漠,修飾函數(shù)時赴精,指定函數(shù)指針作用域?yàn)槲募?nèi)部

register:指定為寄存器變量,建議編譯器將變量存儲到寄存器中使用绞幌,也可以修飾函數(shù)形參蕾哟,建議編譯器通過寄存器而不是堆棧傳遞參數(shù)

extern:指定對應(yīng)變量為外部變量,即在另外的目標(biāo)文件中定義,可以認(rèn)為是約定由另外文件聲明的變量

const:與 volatile 合稱“CV特性”谭确,指定變量不可被當(dāng)前線程/進(jìn)程改變(但有可能被系統(tǒng)或其它線程/進(jìn)程改變)

volatile:與 const 合稱“CV特性”帘营,指定變量的值有可被系統(tǒng)或其它線程/進(jìn)程改變,強(qiáng)制編譯器每次從內(nèi)存中取得該變量的值

二逐哈、流程控制關(guān)鍵字

A 跳轉(zhuǎn)結(jié)構(gòu)(4個)

return:用在函數(shù)體中芬迄,返回特定的值(或者是 void 值,即不返回值)

continue:結(jié)束當(dāng)前循環(huán)昂秃,開始下一輪循環(huán)

break:跳出當(dāng)前循環(huán)或 switch 結(jié)構(gòu)

goto:無條件跳轉(zhuǎn)語句

B 分支結(jié)構(gòu)(5個)

if:條件語句

else:條件語句否定分支(與 if ?連用)

switch:開關(guān)語句(多重分支語句)

case:開關(guān)語句中的分支標(biāo)記

default:開關(guān)語句中的“其它”分治禀梳,可選

C 循環(huán)結(jié)構(gòu)(3個)

for:for 循環(huán)結(jié)構(gòu),for(1;2;3)4;的執(zhí)行順序?yàn)?->2->4->3->2...循環(huán)肠骆,其中2為循環(huán)條件

do:do循環(huán)結(jié)構(gòu)算途,do 1 while(2);的執(zhí)行順序是1->2->1...循環(huán),2為循環(huán)條件

while:while循環(huán)結(jié)構(gòu)蚀腿,while(1)2;的執(zhí)行順序1->2->1...郊艘,1為循環(huán)條件以上循環(huán)語句,當(dāng)循環(huán)條件表達(dá)式為真則繼續(xù)唯咬,是假則跳出循環(huán)。

三畏浆、C99 和 C89 標(biāo)準(zhǔn)對比多了些什么

1胆胰、restrict:指針類型修飾符

C99 中增加了適用于指針的 restrict 類型修飾符,它是?初始訪問指針?biāo)杆笇ο蟮奈ㄒ煌緩娇袒瘢虼酥挥薪柚?restrict 指針表達(dá)式才能訪問對象蜀涨。restrict 指針主要用做函數(shù)變元,或者指向由 malloc() 函數(shù)所分配的內(nèi)存變量蝎毡。restrict 數(shù)據(jù)類型不改變程序的語義厚柳。

如果某個函數(shù)定義了兩個 restrict 指針變元,編譯器就假定它們指向兩個不同的對象沐兵,memcpy()函數(shù)就是 restrict 指針的一個典型應(yīng)用示例别垮。C89 中的 memcpy()函數(shù)原型如下:

代碼:
void *memcpy(void *s1, const void *s2, size_t size);

如果 s1 和 s2 所指向的對象重疊,其操作就是未定義的扎谎。memcpy()函數(shù)中只能用于不重疊的對象碳想。C99 中的 memcpy()函數(shù)原型如下:

代碼:
void *memcpy(void * restrict s1, const void * restrict s2, size_t size);

通過使用 restrict 修飾 s1 和 s2 變元,可確保它們在該原型中指定不同的對象。

2、inline(內(nèi)聯(lián))關(guān)鍵字

內(nèi)聯(lián)函數(shù)除了保持結(jié)構(gòu)化和函數(shù)式的?定義方式外咐鹤,還能使程序員寫出高效率的代碼誊涯。函數(shù)的每次調(diào)用與返回都會消耗相當(dāng)大的系統(tǒng)資源,尤其是當(dāng)函數(shù)調(diào)用發(fā)生在重復(fù)次數(shù)很多的循環(huán)語句中時浊吏。一般情況下颗胡,當(dāng)發(fā)生一次函數(shù)調(diào)用時们何,變元需要進(jìn)棧岩遗,各種?寄存器內(nèi)存需要保存扇商。當(dāng)函數(shù)返回時,寄存器的內(nèi)存需要恢復(fù)喘先。如果該函數(shù)在代碼內(nèi)進(jìn)行聯(lián)機(jī)擴(kuò)展钳吟,當(dāng)代碼執(zhí)行時,這??些保存和恢復(fù)操作旅游活動會再發(fā)生窘拯,而且函數(shù)調(diào)用的執(zhí)行速度也會大大加快红且。函數(shù)的聯(lián)機(jī)擴(kuò)展會產(chǎn)生較長的代碼,所以只應(yīng)該內(nèi)聯(lián)對應(yīng)程序性能有顯著影響的函數(shù)以及長度較短的函數(shù)涤姊。

3暇番、新增數(shù)據(jù)類型

_Bool

值是0或1。C99 中增加了用來定義 bool思喊、true 以及 false 宏的頭文件夾<stdbool.h>壁酬,以便程序員能夠編寫同時兼容于 C 與 C++ 的應(yīng)用程序。在?編寫新的應(yīng)用程序時恨课,應(yīng)該使用 <stdbool.h> 頭文件中的 bool 宏舆乔。

參考地址:http://wenku.baidu.com/link?url=cQlqBXktP6nfKa...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市剂公,隨后出現(xiàn)的幾起案子希俩,更是在濱河造成了極大的恐慌,老刑警劉巖纲辽,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颜武,死亡現(xiàn)場離奇詭異,居然都是意外死亡拖吼,警方通過查閱死者的電腦和手機(jī)鳞上,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吊档,“玉大人篙议,你說我怎么就攤上這事〖” “怎么了涡上?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拒名。 經(jīng)常有香客問我吩愧,道長,這世上最難降的妖魔是什么增显? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任雁佳,我火速辦了婚禮脐帝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘糖权。我一直安慰自己堵腹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布星澳。 她就那樣靜靜地躺著疚顷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪禁偎。 梳的紋絲不亂的頭發(fā)上腿堤,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機(jī)與錄音如暖,去河邊找鬼笆檀。 笑死,一個胖子當(dāng)著我的面吹牛盒至,可吹牛的內(nèi)容都是我干的酗洒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼枷遂,長吁一口氣:“原來是場噩夢啊……” “哼樱衷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酒唉,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤箫老,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后黔州,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阔籽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年流妻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绅这。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖在辆,靈堂內(nèi)的尸體忽然破棺而出证薇,到底是詐尸還是另有隱情,我是刑警寧澤匆篓,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布浑度,位于F島的核電站,受9級特大地震影響鸦概,放射性物質(zhì)發(fā)生泄漏箩张。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望先慷。 院中可真熱鬧饮笛,春花似錦、人聲如沸论熙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脓诡。三九已至无午,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間誉券,已是汗流浹背指厌。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留踊跟,地道東北人踩验。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像商玫,于是被迫代替她去往敵國和親箕憾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 注:這是第三遍讀《C語言深度解剖》拳昌,想想好像自從大學(xué)開始就沒讀完過幾本書袭异,其中譚浩強(qiáng)的那本《C語言程序設(shè)計(jì)(第四版...
    HavenXie閱讀 1,730評論 1 6
  • C 語言標(biāo)準(zhǔn)定義的 32 個關(guān)鍵字有什么,分別怎么用炬藤,用的時候需要注意到什么御铃,便是這篇文章所要告訴的一切。內(nèi)容較長...
    hylerrix閱讀 1,458評論 2 16
  • 口號#和孩子一起成長 孩子第一個30天目標(biāo): 1沈矿、堅(jiān)持早上6點(diǎn)45分起床上真,晚上9點(diǎn)10分上床睡覺; 2羹膳、堅(jiān)持一次只...
    yincarol琴閱讀 224評論 0 0
  • 投射孩子開開心心上學(xué)睡互,投射孩子自控力越來越強(qiáng),投射孩子能盡快體會到學(xué)習(xí)的樂趣陵像,投射孩子在學(xué)校與老師同學(xué)關(guān)系融洽就珠,上...
    a蘇州東山錦湖之家張金成閱讀 302評論 0 1
  • 早晨的GOOD AND NEW 睡前調(diào)整了鬧鐘,之前的音樂醒颖,清醒的同時也將夢境沖刷了干凈妻怎。窗外不遠(yuǎn)有棵樹,經(jīng)常會有...
    楊黎黎Lily閱讀 365評論 0 0