C語(yǔ)言小知識匯總
C語(yǔ)言小知識你知道多少呢?下面是百分網(wǎng)小編匯總的C語(yǔ)言小知識,快來(lái)看看吧!

基本數據類(lèi)型
void:聲明函數無(wú)返回值或無(wú)參數,聲明無(wú)類(lèi)型指針,顯示丟棄運算結果。(C89標準新增)
char:字符型類(lèi)型數據,屬于整型數據的一種。(K&R時(shí)期引入)
int:整型數據,表示范圍通常為編譯器指定的內存字節長(cháng)。(K&R時(shí)期引入)
float:?jiǎn)尉雀↑c(diǎn)型數據,屬于浮點(diǎn)數據的一種。(K&R時(shí)期引入)
double:雙精度浮點(diǎn)型數據,屬于浮點(diǎn)數據的.一種。(K&R時(shí)期引入)
_Bool:布爾型(C99標準新增)
_Complex:復數的基本類(lèi)型(C99標準新增)
_Imaginary:虛數,與復數基本類(lèi)型相似,沒(méi)有實(shí)部的純虛數(C99標準新增)
_Generic:提供重載的接口入口(C11標準新增)
類(lèi)型修飾關(guān)鍵字
short:修飾int,短整型數據,可省略被修飾的'int。(K&R時(shí)期引入)
long:修飾int,長(cháng)整型數據,可省略被修飾的int。(K&R時(shí)期引入)
long long:修飾int,超長(cháng)整型數據,可省略被修飾的int。(C99標準新增)
signed:修飾整型數據,有符號數據類(lèi)型。(C89標準新增)
unsigned:修飾整型數據,無(wú)符號數據類(lèi)型。(K&R時(shí)期引入)
restrict:用于限定和約束指針,并表明指針是訪(fǎng)問(wèn)一個(gè)數據對象的唯一且初始的方式。(C99標準新增)
復雜類(lèi)型關(guān)鍵字
struct:結構體聲明。(K&R時(shí)期引入)
union:聯(lián)合體聲明。(K&R時(shí)期引入)
enum:枚舉聲明。(C89標準新增)
typedef:聲明類(lèi)型別名。(K&R時(shí)期引入)
sizeof:得到特定類(lèi)型或特定類(lèi)型變量的大小。(K&R時(shí)期引入)
inline:內聯(lián)函數用于取代宏定義,會(huì )在任何調用它的地方展開(kāi)。(C99標準新增)
存儲級別關(guān)鍵字
auto:指定為自動(dòng)變量,由編譯器自動(dòng)分配及釋放。通常在棧上分配。與static相反。當變量未指定時(shí)默認為auto。(K&R時(shí)期引入)
static:指定為靜態(tài)變量,分配在靜態(tài)變量區,修飾函數時(shí),指定函數作用域為文件內部。(K&R時(shí)期引入)
register:指定為寄存器變量,建議編譯器將變量存儲到寄存器中使用,也可以修飾函數形參,建議編譯器通過(guò)寄存器而不是堆棧傳遞參數。(K&R時(shí)期引入)
extern:指定對應變量為外部變量,即標示變量或者函數的定義在別的`文件中,提示編譯器遇到此變量和函數時(shí)在其他模塊中尋找其定義。(K&R時(shí)期引入)
const:指定變量不可被當前線(xiàn)程改變(但有可能被系統或其他線(xiàn)程改變)。(C89標準新增)
volatile:指定變量的值有可能會(huì )被系統或其他線(xiàn)程改變,強制編譯器每次從內存中取得該變量的值,阻止編譯器把該變量?jì)?yōu)化成寄存器變量。(C89標準新增)
流程控制關(guān)鍵字
跳轉結構
return:用在函數體中,返回特定值(如果是void類(lèi)型,則不返回函數值)。(K&R時(shí)期引入)
continue:結束當前循環(huán),開(kāi)始下一輪循環(huán)。(K&R時(shí)期引入)
break:跳出當前循環(huán)或switch結構。(K&R時(shí)期引入)
goto:無(wú)條件跳轉語(yǔ)句。(K&R時(shí)期引入)
分支結構
if:條件語(yǔ)句,后面不需要放分號。(K&R時(shí)期引入)
else:條件語(yǔ)句否定分支(與if連用)。(K&R時(shí)期引入)
switch:開(kāi)關(guān)語(yǔ)句(多重分支語(yǔ)句)。(K&R時(shí)期引入)
case:開(kāi)關(guān)語(yǔ)句中的分支標記,與switch連用。(K&R時(shí)期引入)
default:開(kāi)關(guān)語(yǔ)句中的“其他”分支,可選。(K&R時(shí)期引入)
編譯
#define 預編譯宏
#if 表達式 #else if 表達式 #else #endif 條件編譯
#ifdef 宏 #else #endif 條件編譯
#ifndef 宏 #else #endif 條件編譯與條件編譯
語(yǔ)法結構
選擇結構
順序結構的程序雖然能解決計算、輸出等問(wèn)題,但不能做判斷再選擇。對于要先做判斷再選擇的問(wèn)題就要使用選擇結構。選擇結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語(yǔ)句出現的物理順序。選擇結構的程序設計方法的關(guān)鍵在于構造合適的`分支條件和分析程序流程,根據不同的程序流程選擇適當的選擇語(yǔ)句。選擇結構適合于帶有邏輯或關(guān)系比較等條件判斷的計算,設計這類(lèi)程序時(shí)往往都要先繪制其程序流程圖,然后根據程序流程寫(xiě)出源程序,這樣做把程序設計分析與語(yǔ)言分開(kāi),使得問(wèn)題簡(jiǎn)單化,易于理解。程序流程圖是根據解題分析所繪制的程序執行流程圖。[23]
循環(huán)結構
循環(huán)結構可以減少源程序重復書(shū)寫(xiě)的工作量,用來(lái)描述重復執行某段算法的問(wèn)題,這是程序設計中最能發(fā)揮計算機特長(cháng)的程序結構,C語(yǔ)言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do while循環(huán)和for循環(huán)。四種循環(huán)可以用來(lái)處理同一問(wèn)題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因為強制改變程序的順序經(jīng)常會(huì )給程序的運行帶來(lái)不可預料的.錯誤。
特別要注意在循環(huán)體內應包含趨于結束的語(yǔ)句(即循環(huán)變量值的改變),否則就可能成了一個(gè)死循環(huán),這是初學(xué)者的一個(gè)常見(jiàn)錯誤。
三個(gè)循環(huán)的異同點(diǎn):用while和do…while循環(huán)時(shí),循環(huán)變量的初始化的操作應在循環(huán)體之前,而for循環(huán)一般在語(yǔ)句1中進(jìn)行的;while循環(huán)和for循環(huán)都是先判斷表達式,后執行循環(huán)體,而do…while循環(huán)是先執行循環(huán)體后判斷表達式,也就是說(shuō)do…while的循環(huán)體最少被執行一次,而while循環(huán)和for就可能一次都不執行。另外還要注意的是這三種循環(huán)都可以用break語(yǔ)句跳出循環(huán),用continue語(yǔ)句結束本次循環(huán),而goto語(yǔ)句與if構成的循環(huán),是不能用break和 continue語(yǔ)句進(jìn)行控制的。
順序結構、分支結構和循環(huán)結構并不彼此孤立的,在循環(huán)中可以有分支、順序結構,分支中也可以有循環(huán)、順序結構,其實(shí)不管哪種結構,均可廣義的把它們看成一個(gè)語(yǔ)句。在實(shí)際編程過(guò)程中常將這三種結構相互結合以實(shí)現各種算法,設計出相應程序,但是要編程的問(wèn)題較大,編寫(xiě)出的程序就往往很長(cháng)、結構重復多,造成可讀性差,難以理解,解決這個(gè)問(wèn)題的方法是將C程序設計成模塊化結構
順序結構
順序結構的程序設計是最簡(jiǎn)單的,只要按照解決問(wèn)題的順序寫(xiě)出相應的語(yǔ)句就行,它的'執行順序是自上而下,依次執行。
例如:a = 3,b = 5,現交換a,b的值,這個(gè)問(wèn)題就好像交換兩個(gè)杯子水,這當然要用到第三個(gè)杯子,假如第三個(gè)杯子是c,那么正確的程序為:c = a; a = b; b = c;執行結果是a = 5,b = c = 3如果改變其順序,寫(xiě)成:a = b; c = a; b =c;則執行結果就變成a = b = c = 5,不能達到預期的目的,初學(xué)者最容易犯這種錯誤。順序結構可以獨立使用構成一個(gè)簡(jiǎn)單的完整程序,常見(jiàn)的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語(yǔ)句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過(guò)大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個(gè)復雜的程序,例如分支結構中的復合語(yǔ)句、循環(huán)結構中的循環(huán)體等。[22]
【C語(yǔ)言小知識】相關(guān)文章:
C語(yǔ)言基礎小知識09-18
C語(yǔ)言基礎知識小總結07-08
嵌入式C語(yǔ)言編程小知識12-20
C語(yǔ)言嵌入式編程小知識08-30
C語(yǔ)言入門(mén)知識07-20
C語(yǔ)言的應用知識08-30
嵌入式C語(yǔ)言編程小知識總結08-12
C語(yǔ)言預處理知識06-13
C語(yǔ)言知識點(diǎn)精選09-16