C語言關(guān)鍵字總結(jié)解析
C語言關(guān)鍵字總結(jié)
1.關(guān)鍵字變更歷史
2.關(guān)鍵字列表
auto :聲明自動變量 break:跳出當(dāng)前循環(huán) case:開關(guān)語句分支 char :聲明字符型變量或函數(shù)返回值類型 const :聲明只讀變量 continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán) default:開關(guān)語句中的“其它”分支 do :循環(huán)語句的循環(huán)體 double :聲明雙精度浮點(diǎn)型變量或函數(shù)返回值類型 else :條件語句否定分支(與 if 連用) enum :聲明枚舉類型 extern:聲明變量或函數(shù)是在其它文件或本文件的其他位置定義 float:聲明浮點(diǎn)型變量或函數(shù)返回值類型 for:一種循環(huán)語句 goto:無條件跳轉(zhuǎn)語句 if:條件語句 int: 聲明整型變量或函數(shù) long :聲明長整型變量或函數(shù)返回值類型 register:聲明寄存器變量 return :子程序返回語句(可以帶參數(shù),也可不帶參數(shù)) short :聲明短整型變量或函數(shù) signed:聲明有符號類型變量或函數(shù) sizeof:計(jì)算數(shù)據(jù)類型或變量長度(即所占字節(jié)數(shù)) static :聲明靜態(tài)變量 struct:聲明結(jié)構(gòu)體類型 switch :用于開關(guān)語句 typedef:用以給數(shù)據(jù)類型取別名 unsigned:聲明無符號類型變量或函數(shù) union:聲明共用體類型 void :聲明函數(shù)無返回值或無參數(shù),聲明無類型指針 volatile:說明變量在程序執(zhí)行中可被隱含地改變 while :循環(huán)語句的循環(huán)條件
3.c語言關(guān)鍵字優(yōu)點(diǎn)(c99,不是c11標(biāo)準(zhǔn))
簡潔緊湊、靈活方便
ANSI C一共只有32個關(guān)鍵字,9種控制語句,程序書寫形式自由,區(qū)分大小寫。把高級語言的基本結(jié)構(gòu)和語句與低級語言的實(shí)用性結(jié)合起來。 C 語言可以像匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。
運(yùn)算符豐富
C語言的運(yùn)算符包含的范圍很廣泛,共有34種運(yùn)算符。C語言把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C語言的運(yùn)算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級語言中難以實(shí)現(xiàn)的運(yùn)算。
數(shù)據(jù)類型豐富
C語言的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動器。且計(jì)算功能、邏輯判斷功能強(qiáng)大。
同時對于不同的編譯器也有各種強(qiáng)大的擴(kuò)展功能。
另外
C語言如此豐富數(shù)據(jù)類型及強(qiáng)大指針功能,其對硬件的管控能力極強(qiáng),所以許多操作系統(tǒng)內(nèi)核及MCU芯片程序開發(fā)都偏愛硬件。
4.這里可以提下volatile關(guān)鍵字,關(guān)于這個關(guān)鍵字有一些文章,參考 這篇
volatile總是與優(yōu)化有關(guān),編譯器有一種技術(shù)叫做數(shù)據(jù)流分析,分析程序中的變量在哪里賦值、在哪里使用、在哪里失效,分析結(jié)果可以用于常量合并,常量傳播等優(yōu)化,進(jìn)一步可以消除一些代碼。但有時這些優(yōu)化不是程序所需要的,這時可以用volatile關(guān)鍵字禁止做這些優(yōu)化。
volatile的本意是“易變的” 因?yàn)樵L問寄存器要比訪問內(nèi)存單元快的多,所以編譯器一般都會作減少存取內(nèi)存的優(yōu)化,但有可能會讀臟數(shù)據(jù)。當(dāng)要求使用volatile聲明變量值的時候,系統(tǒng)總是重新從它所在的內(nèi)存讀取數(shù)據(jù),即使它前面的指令剛剛從該處讀取過數(shù)據(jù)。精確地說就是,遇到這個關(guān)鍵字聲明的變量,編譯器對訪問該變量的代碼就不再進(jìn)行優(yōu)化,從而可以提供對特殊地址的穩(wěn)定訪問;如果不使用valatile,則編譯器將對所聲明的語句進(jìn)行優(yōu)化。(簡潔的說就是:volatile關(guān)鍵詞影響編譯器編譯的結(jié)果,用volatile聲明的變量表示該變量隨時可能發(fā)生變化,與該變量有關(guān)的運(yùn)算,不要進(jìn)行編譯優(yōu)化,以免出錯)
看兩個事例:
1>告訴compiler不能做任何優(yōu)化
比如要往某一地址送兩指令: int *ip =...; //設(shè)備地址 *ip = 1; //第一個指令 *ip = 2; //第二個指令 以上程序compiler可能做優(yōu)化而成: int *ip = ...; *ip = 2; 結(jié)果第一個指令丟失。如果用volatile, compiler就不允許做任何的優(yōu)化,從而保證程序的原意: volatile int *ip = ...; *ip = 1; *ip = 2; 即使你要compiler做優(yōu)化,它也不會把兩次付值語句間化為一。它只能做其它的優(yōu)化。
2>用volatile定義的變量會在程序外被改變,每次都必須從內(nèi)存中讀取,而不能重復(fù)使用放在cache或寄存器中的備份。
例如:
volatile char a; a=0; while(!a){ //do some things; } doother(); 如果沒有 volatiledoother()不會被執(zhí)行
到此這篇關(guān)于C語言關(guān)鍵字總結(jié)解析的文章就介紹到這了,更多相關(guān)C語言關(guān)鍵字總結(jié)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
分享一下8年C++面向?qū)ο笤O(shè)計(jì)的經(jīng)驗(yàn)體會
關(guān)于C++程序設(shè)計(jì)的書藉非常多,本章不講C++的語法,只講一些小小的編程道理。如果我能早幾年明白這些小道理,就可以大大改善數(shù)十萬行程序的質(zhì)量了2017-07-07深入理解數(shù)組指針與指針數(shù)組的區(qū)別
本篇文章是對數(shù)組指針與指針數(shù)組的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05