亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

C語言

C語言小知識

時間:2024-09-09 13:29:12 C語言 我要投稿

C語言小知識匯總

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

C語言小知識匯總

  基本數(shù)據(jù)類型

  void:聲明函數(shù)無返回值或無參數(shù),聲明無類型指針,顯示丟棄運算結(jié)果。(C89標(biāo)準(zhǔn)新增)

  char:字符型類型數(shù)據(jù),屬于整型數(shù)據(jù)的一種。(K&R時期引入)

  int:整型數(shù)據(jù),表示范圍通常為編譯器指定的.內(nèi)存字節(jié)長。(K&R時期引入)

  float:單精度浮點型數(shù)據(jù),屬于浮點數(shù)據(jù)的一種。(K&R時期引入)

  double:雙精度浮點型數(shù)據(jù),屬于浮點數(shù)據(jù)的一種。(K&R時期引入)

  _Bool:布爾型(C99標(biāo)準(zhǔn)新增)

  _Complex:復(fù)數(shù)的基本類型(C99標(biāo)準(zhǔn)新增)

  _Imaginary:虛數(shù),與復(fù)數(shù)基本類型相似,沒有實部的純虛數(shù)(C99標(biāo)準(zhǔn)新增)

  _Generic:提供重載的接口入口(C11標(biāo)準(zhǔn)新增)

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

  short:修飾int,短整型數(shù)據(jù),可省略被修飾的int。(K&R時期引入)

  long:修飾int,長整型數(shù)據(jù),可省略被修飾的int。(K&R時期引入)

  long long:修飾int,超長整型數(shù)據(jù),可省略被修飾的'int。(C99標(biāo)準(zhǔn)新增)

  signed:修飾整型數(shù)據(jù),有符號數(shù)據(jù)類型。(C89標(biāo)準(zhǔn)新增)

  unsigned:修飾整型數(shù)據(jù),無符號數(shù)據(jù)類型。(K&R時期引入)

  restrict:用于限定和約束指針,并表明指針是訪問一個數(shù)據(jù)對象的唯一且初始的方式。(C99標(biāo)準(zhǔn)新增)

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

  struct:結(jié)構(gòu)體聲明。(K&R時期引入)

  union:聯(lián)合體聲明。(K&R時期引入)

  enum:枚舉聲明。(C89標(biāo)準(zhǔn)新增)

  typedef:聲明類型別名。(K&R時期引入)

  sizeof:得到特定類型或特定類型變量的大小。(K&R時期引入)

  inline:內(nèi)聯(lián)函數(shù)用于取代宏定義,會在任何調(diào)用它的地方展開。(C99標(biāo)準(zhǔn)新增)

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

  auto:指定為自動變量,由編譯器自動分配及釋放。通常在棧上分配。與static相反。當(dāng)變量未指定時默認(rèn)為auto。(K&R時期引入)

  static:指定為靜態(tài)變量,分配在靜態(tài)變量區(qū),修飾函數(shù)時,指定函數(shù)作用域為文件內(nèi)部。(K&R時期引入)

  register:指定為寄存器變量,建議編譯器將變量存儲到寄存器中使用,也可以修飾函數(shù)形參,建議編譯器通過寄存器而不是堆棧傳遞參數(shù)。(K&R時期引入)

  extern:指定對應(yīng)變量為外部變量,即標(biāo)示變量或者函數(shù)的定義在別的`文件中,提示編譯器遇到此變量和函數(shù)時在其他模塊中尋找其定義。(K&R時期引入)

  const:指定變量不可被當(dāng)前線程改變(但有可能被系統(tǒng)或其他線程改變)。(C89標(biāo)準(zhǔn)新增)

  volatile:指定變量的值有可能會被系統(tǒng)或其他線程改變,強制編譯器每次從內(nèi)存中取得該變量的值,阻止編譯器把該變量優(yōu)化成寄存器變量。(C89標(biāo)準(zhǔn)新增)

  流程控制關(guān)鍵字

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

  return:用在函數(shù)體中,返回特定值(如果是void類型,則不返回函數(shù)值)。(K&R時期引入)

  continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)。(K&R時期引入)

  break:跳出當(dāng)前循環(huán)或switch結(jié)構(gòu)。(K&R時期引入)

  goto:無條件跳轉(zhuǎn)語句。(K&R時期引入)

  分支結(jié)構(gòu)

  if:條件語句,后面不需要放分號。(K&R時期引入)

  else:條件語句否定分支(與if連用)。(K&R時期引入)

  switch:開關(guān)語句(多重分支語句)。(K&R時期引入)

  case:開關(guān)語句中的分支標(biāo)記,與switch連用。(K&R時期引入)

  default:開關(guān)語句中的“其他”分支,可選。(K&R時期引入)

  編譯

  #define 預(yù)編譯宏

  #if 表達(dá)式 #else if 表達(dá)式 #else #endif 條件編譯

  #ifdef 宏 #else #endif 條件編譯

  #ifndef 宏 #else #endif 條件編譯與條件編譯

  語法結(jié)構(gòu)

  選擇結(jié)構(gòu)

  順序結(jié)構(gòu)的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用選擇結(jié)構(gòu)。選擇結(jié)構(gòu)的執(zhí)行是依據(jù)一定的'條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的物理順序。選擇結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)倪x擇語句。選擇結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計算,設(shè)計這類程序時往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計分析與語言分開,使得問題簡單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。[23]

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

  循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機特長的程序結(jié)構(gòu),C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do while循環(huán)和for循環(huán)。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因為強制改變程序的順序經(jīng)常會給程序的運行帶來不可預(yù)料的錯誤。

  特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個死循環(huán),這是初學(xué)者的一個常見錯誤。

  三個循環(huán)的異同點:用while和do…while循環(huán)時,循環(huán)變量的初始化的`操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語句1中進(jìn)行的;while循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而do…while循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說do…while的循環(huán)體最少被執(zhí)行一次,而while循環(huán)和for就可能一次都不執(zhí)行。另外還要注意的是這三種循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán),而goto語句與if構(gòu)成的循環(huán),是不能用break和 continue語句進(jìn)行控制的。

  順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),其實不管哪種結(jié)構(gòu),均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結(jié)構(gòu)相互結(jié)合以實現(xiàn)各種算法,設(shè)計出相應(yīng)程序,但是要編程的問題較大,編寫出的程序就往往很長、結(jié)構(gòu)重復(fù)多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設(shè)計成模塊化結(jié)構(gòu)

  順序結(jié)構(gòu)

  順序結(jié)構(gòu)的程序設(shè)計是最簡單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。

  例如:a = 3,b = 5,現(xiàn)交換a,b的值,這個問題就好像交換兩個杯子水,這當(dāng)然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為:c = a; a = b; b = c;執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b =c;則執(zhí)行結(jié)果就變成a = b = c = 5,不能達(dá)到預(yù)期的目的,初學(xué)者最容易犯這種錯誤。順序結(jié)構(gòu)可以獨立使用構(gòu)成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計算圓的面積,其程序的語句順序就是輸入圓的.半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。[22]

【C語言小知識】相關(guān)文章:

嵌入式C語言編程小知識12-20

C語言入門知識07-20

C語言基礎(chǔ)知識12-20

C語言預(yù)處理知識11-26

C語言的枚舉類型知識04-19

C語言基本知識06-27

C語言入門知識:常量08-31

C語言知識點講解03-02

C語言數(shù)組知識點03-29