C語言回顧學習第二回:基礎語法篇2

C 中,有特定的字符,當它們前面有反斜槓時,它們就具有特殊的含義,被用來表示如換行符(\n)或製表符,下表列出了一些這樣的轉義序列碼

轉義序列 含義
    \\               \ 字符                                                                          
     \' ' 字符
    \" " 字符
    \? ? 字符
    \a 警報鈴聲
    \b 退格鍵
    \f 換頁符
    \n 換行符
    \r 回車
    \t 水平製表符
    \v 垂直製表符
    \ooo 一到三位的八進制數
    \xhh . . . 一個或多個數字的十六進制數

 

C存儲類

存儲類定義 C 程序中變量/函數的範圍(可見性)和生命週期。這些關鍵字放在被描述的類型前面。C 程序中可用的存儲類:

  • auto:所有局部變量默認的存儲類,
  • register:用於聲明存儲在寄存器中而不是 RAM 中的局部變量。這意味着變量的最大尺寸等於寄存器的大小(通常是一個詞),且不能對它應用一元的 '&' 運算符(因爲它沒有內存位置)。寄存器用於需要快速訪問的變量,定義 'register' 並不意味着變量將被存儲在寄存器中,它意味着變量可能存儲在寄存器中
  • static:指示編譯器在程序的生命週期內保持局部變量的存在,而不需要在每次它進入和離開作用域時進行創建和銷燬,因此,使用 static 聲明的局部變量可以在函數調用之間保持局部變量的值。static 修飾符也可以應用於全局變量。當 static 修飾全局變量時,會使變量或者方法的作用域限制在聲明它的文件內,能被當前文件的任意函數和方法調用。
  • extern:用於提供一個全局變量的引用,該聲明的全局變量對所有的程序文件都是可見的。對於extern 聲明的未初始化的變量,會把變量名指向一個之前定義過的存儲位置。

 

C 運算符

算術運算符

+(加),-(減),*(乘),/(整除),%(取餘),++(自增),--(自減)

對於++與-- ,當與賦值表達式一起使用時,在變量右則先賦值再自增或自減運算,在變量左則先自增或自減運算再賦值

關係運算符

==(相等),!=(不相等),>(大於),<(小於),>=(大於等於),<=(小於等於)

邏輯運算符

&&(邏輯與),||(邏輯或),!(邏輯非)

位運算符

位運算符作用於位,並逐位執行操作。

&(按位與), | (按位或), ^(按位異或),~(按位取反),<<(位左移運算符),>>(位右移運算符)

賦值運算符

=(賦值)

雜項運算符

sizeof()(返回變量大小), &(返回變量的地址),* (指向一個變量),a?b:c( a真則爲b,否則爲c)。

運算符優先級

下表將按運算符優先級從高到低列出各個運算符,具有較高優先級的運算符出現在表格的上面,具有較低優先級的運算符出現在表格的下面。在表達式中,較高優先級的運算符會優先被計算

類別  運算符  結合性 
後綴                     () [] -> . ++ - -                                                    從左到右 
一元  + - ! ~ ++ - - (type)* & sizeof  從右到左 
乘除  * / %  從左到右 
加減  + -  從左到右 
移位  << >>  從左到右 
關係  < <= > >=  從左到右 
相等  == !=  從左到右 
位與 AND  從左到右 
位異或 XOR  從左到右 
位或 OR  從左到右 
邏輯與 AND  &&  從左到右 
邏輯或 OR  ||  從左到右 
條件  ?:  從右到左 
賦值  = += -= *= /= %=>>= <<= &= ^= |=  從右到左 
逗號  從左到右          

 

C 判斷

C 語言把任何非零非空的值假定爲 true,把或 null 假定爲 false

if...else if...else 和 switch

switch 語句必須遵循下面的規則:

  • switch 語句中的 expression 是一個常量表達式,必須是一個整型或枚舉類型。
  • 在一個 switch 中可以有任意數量的 case 語句。每個 case 後跟一個要比較的值和一個冒號。
  • case 的 constant-expression 必須與 switch 中的變量具有相同的數據類型,且必須是一個常量或字面量。
  • 當被測試的變量等於 case 中的常量時,case 後跟的語句將被執行,直到遇到 break 語句爲止。
  • 當遇到 break 語句時,switch 終止,控制流將跳轉到 switch 語句後的下一行。
  • 不是每一個 case 都需要包含 break。如果 case 語句不包含 break,控制流將會 繼續 後續的 case,直到遇到 break 爲止。
  • 一個 switch 語句可以有一個可選的 default case,出現在 switch 的結尾。default case 可用於在上面所有 case 都不爲真時執行一個任務。default case 中的 break 語句不是必需的。

 

C 循環

while 循環(當給定條件爲真時,重複語句或語句組。),for 循環,break(終止循環或 switch 語句)、continue關鍵字(立刻停止本次循環迭代,重新開始下次循環迭代。)

for ( init; condition; increment )
{
   statement(s);
}

 for 循環的控制流:

  1. init 會首先被執行,且只會執行一次。這一步允許您聲明並初始化任何循環控制變量。您也可以不在這裏寫任何語句,只要有一個分號出現即可。
  2. 接下來,會判斷 condition。如果爲真,則執行循環主體。如果爲假,則不執行循環主體,且控制流會跳轉到緊接着 for 循環的下一條語句。
  3. 在執行完 for 循環主體後,控制流會跳回上面的 increment 語句。該語句允許您更新循環控制變量。該語句可以留空,只要在條件後有一個分號出現即可。
  4. 條件再次被判斷。如果爲真,則執行循環,這個過程會不斷重複(循環主體,然後增加步值,再然後重新判斷條件)。在條件變爲假時,for 循環終止。

使用 for(;;) 或者 while{} 結構來表示一個無限循環。當條件表達式不存在時,它被假設爲真。按 Ctrl + C 鍵終止一個無限循環。


C函數

定義函數

return_type function_name( parameter list )
{
   body of the function
}
  • 返回類型:一個函數可以返回一個值。return_type 是函數返回的值的數據類型。有些函數執行所需的操作而不返回值,在這種情況下,return_type 是關鍵字 void
  • 函數名稱:這是函數的實際名稱。函數名和參數列表一起構成了函數簽名。
  • 參數:參數就像是佔位符。當函數被調用時,您向參數傳遞一個值,這個值被稱爲實際參數。參數列表包括函數參數的類型、順序、數量。參數是可選的,也就是說,函數可能不包含參數。
  • 函數主體:函數主體包含一組定義函數執行任務的語句。

聲明函數和調用函數

return_type function_name( parameter list );

在函數聲明中,參數的名稱並不重要,只有參數的類型是必需的。

在一個源文件中定義函數且在另一個文件中調用函數時,函數聲明是必需的。在這種情況下,應該在調用者所在的文件頂部聲明函數。

調用函數時,傳遞所需參數,如果函數返回一個值,則可以存儲返回值。

函數參數

傳值調用:向函數傳遞參數的傳值調用方法,把參數的實際值複製給函數的形式參數。在這種情況下,修改函數內的形式參數不會影響實際參數。

引用調用:通過引用傳遞方式,形參爲指向實參地址的指針,當對形參的指向的地址進行操作時,就相當於對實參本身進行的操作,即改變了實參。

C 作用域規則

作用域是程序中定義的變量所存在的區域,超過該區域變量就不能被訪問。C 語言中有三個地方可以聲明變量:

  1. 在函數或塊內部的局部變量
  2. 在所有函數外部的全局變量
  3. 形式參數的函數參數定義中

局部變量

某個函數或塊的內部聲明的變量稱爲局部變量。它們只能被該函數或該代碼塊內部的語句使用。局部變量在函數外部是不可知的。

全局變量

全局變量是定義在函數外部。全局變量在整個程序生命週期內都是有效的,在任意的函數內部能訪問全局變量。

在函數內,如果局部變量的名字和全局變量名相同,會使用局部變量值,全局變量不會被使用。

全局變量與局部變量在內存中的區別

  • 全局變量保存在內存的全局存儲區中,佔用靜態的存儲單元;
  • 局部變量保存在棧中,只有在所在函數被調用時才動態地爲變量分配存儲單元。

局部變量和全局變量初始化

局部變量被定義時,系統不會對其初始化,使用前必須自行對其初始化。而定義全局變量時,系統會自動對其初始化。全局變量初始化默認值如下:

數據類型                       初始化默認值                 
int          0     
char '\0'
float 0
double 0
pointer NULL
發佈了178 篇原創文章 · 獲贊 95 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章