【期末考試】一篇文章帶你系統(tǒng)回顧C語言,輕松應(yīng)對考試!
前言
c 語言是一種底層語言,是一種系統(tǒng)底層級的語言,例如Windows、Linux、Unix等操作系統(tǒng)就是使用c語言編寫的。所以由此看來,不論是火爆的Java,還是近年來愈來愈流行的Python,它們雖外表光鮮亮麗,但c語言就是內(nèi)在的靈魂,樸實無華。

c 語言特性
c 語言既然這么重要,但是它有什么值得我們?nèi)W(xué)的地方呢?難道我們就因為聽到別人說它重要我們才去學(xué)習(xí)嗎?我想我們更加在意的是學(xué)完我們能掌握些什么,能讓我們獲得什么。
c 語言的設(shè)計
c 語言是1972年,貝爾實驗室在開發(fā)Unix操作系統(tǒng)是設(shè)計了c 語言。c 語言是一門流行的語言,它把計算機科學(xué)理論和工程實踐完美的融合在一起,使用戶能夠完成模塊化的編程和設(shè)計。
c 語言具有高效性
c 語言是一門高效的語言,它被設(shè)計用來充分發(fā)揮計算機的優(yōu)勢,因此c 語言程序運行速度很快,c 語言能夠合理的通過操縱內(nèi)存來獲取最大的運行速度。
c 語言的可移植性
顧名思義,可移植性就意味著,對于在一臺計算機上編寫的c語言程序可以在另外一臺計算機上輕松地運行,從而極大的減少了程序移植的工作量。
c 語言特點
簡潔:因為c語言設(shè)計更加靠近底層,因此不需要有像Java、c# 等高級語言才有的特性,程序的編寫要求不是很嚴格。
結(jié)構(gòu)化:它提供的控制語句具有結(jié)構(gòu)化特征,如for循環(huán)、if.... else 判斷語句和switch語句等。
數(shù)據(jù)類型豐富:不僅有傳統(tǒng)的字符型、整形、浮點型、數(shù)組?類型等數(shù)據(jù)類型,還有其他編程語言沒有的數(shù)據(jù)類型,例如指針。
c 語言能夠直接對內(nèi)存地址進行讀寫,因此可以實現(xiàn)匯編語言的主要功能,并直接可以操作硬件。
c 語言速率快,生成的目標(biāo)代碼執(zhí)行效率高。
下面著重整理下c 語言知識點
程序的環(huán)境和預(yù)處理
環(huán)境
環(huán)境分為執(zhí)行環(huán)境和翻譯環(huán)境——預(yù)編譯、編譯、匯編、鏈接;
預(yù)處理
預(yù)定義符號:
_ FILE _ //進行編譯的源文件
_ LINE _ //文件當(dāng)前的行號
_ DATE _ //文件被編譯的日期
_ TIME _ //文件被編譯的時間
_ STDC _ //如果編譯器遵循ANSI C,其值為1,否則未定義

數(shù)據(jù)
數(shù)據(jù)類型
整形:
(1)char:
unsigned char , signed char;
(2)short:
unsigned short [int]
signer short [int]
(3)int :
unsigned int
signed int
(4)long :
unsigned long [int]
signed long [int]
浮點型:
(1)單精度浮點型:float
(2)雙精度浮點型:double
構(gòu)造類型:
(1)數(shù)據(jù)類型
(2)結(jié)構(gòu)體類型 struct
(3)枚舉類型 enum
(4)聯(lián)合類型 union
指針類型:
空類型;存儲類型
整形:在內(nèi)存中存放的是補碼
常量變量
常量
常量分為:字面常量、const定義的常量、#define定義的標(biāo)識符常量、枚舉常量。
變量
變量需要注意變量的命名規(guī)則,變量的初始化和賦值、以及根據(jù)是否有static修飾分為:全局變量和局部變量。
作用域
作用域分為:代碼塊作用域、文件作用域、原型作用域、函數(shù)作用域。
鏈接屬性
至于這個概念我們應(yīng)該基本了解什么是外部鏈接屬性,什么是內(nèi)部鏈接屬性以及什么是無屬性即可。
語句
表達式語句:在表達式結(jié)尾加上分號稱之為表達式語句;
循環(huán)語句:例如while語句,do .... while 語句,for 語句,以及 break 和 continue 的用法;
分支語句:if 語句,switch 語句,goto 語句(少用);
空語句(特別注意):只有一個分號的語句,不執(zhí)行任何操作的語句。
操作符
操作符在實際編程中用到的也比較多,在這里僅僅采用提示性的方式列舉一部分。
算術(shù)運算符:(+ - * / %)、移位操作符(<< 左移 ; >> 右移)、 位操作符(& 按位與,| 按位或 ,^ 按位異或)、 賦值操作符( = )、 復(fù)合操作符(+= , -= ,*= ,/= ,%=,>>=,<<= ,&=,|=,^=,)。
單目運算符的回顧
邏輯反操作(?。?、負 值(-)、正值(+)、取地址(&)、操作數(shù)的類型長度(以字節(jié)為單位 sizeof)、對一個數(shù)的二進制按位取反(~~)、間接訪問操作符(解引用操作符 *)、(類型)強制類型轉(zhuǎn)換。
還有一些較為常見的關(guān)操作符,邏輯運算符 :邏輯與(&&)、邏輯或(||),條件操作符、逗號表達式、下標(biāo)引用、函數(shù)調(diào)用和結(jié)構(gòu)成員等也要進行聯(lián)想,明白各個術(shù)語到底是怎么回事。同時我們也要明白操作符的優(yōu)先級、結(jié)合性以及是否控制求值順序這些屬性。

函數(shù)
函數(shù)的分類:
函數(shù)是由函數(shù)名、函數(shù)參數(shù)、語句項和返回類型構(gòu)成的為了單獨實現(xiàn)某種功能而編寫的子程序。函數(shù)一般分為庫函數(shù)和自定義函數(shù)。比較常見的庫函數(shù)有IO函數(shù),字符串操作函數(shù),字符操作函數(shù),內(nèi)存操作函數(shù),時間/日期函數(shù),數(shù)學(xué)函數(shù),其他庫函數(shù)等。同時在自定義函數(shù)時像函數(shù)的參數(shù)不要過多,代碼的可復(fù)用性以及函數(shù)參數(shù)和返回值的設(shè)計是否滿足功能的要求等都需要注意。
函數(shù)的聲明和定義:
函數(shù)的聲明就是要告訴編譯器有一個函數(shù)叫什么,參數(shù)是什么,返回類型是什么,但是具體是不是存在,無關(guān)緊要;同時,聲明一般出現(xiàn)在函數(shù)使用之前,要滿足先聲明后使用這一條件;另外,函數(shù)的聲明一般要放在頭文件中。
函數(shù)的調(diào)用:分為傳值調(diào)用,地址調(diào)用,嵌套調(diào)用和鏈?zhǔn)皆L問。
數(shù)組
數(shù)組創(chuàng)建和初始化后在內(nèi)存中從低地址到高地址連續(xù)存放。數(shù)組又分為一維數(shù)組,多維數(shù)組(存放著n-1 維的一維數(shù)組)和指針數(shù)組(數(shù)組里存放著指針元素)——例如:int *arr[10] 。
創(chuàng)建數(shù)組后需要使用時,這就需要我們對數(shù)組進行訪問。數(shù)組的訪問有下標(biāo)訪問和指針訪問兩種形式。
指針
指針就是用來存放地址的變量。指針除了常見的基本類型外,還有數(shù)組指針,函數(shù)指針,如果想要詳細的學(xué)習(xí)下指針,可以參考下我之前寫過的一篇文章。在這篇文章里可以較為深入的了解下指針。同時在這里也要特別提起兩個名詞:解引用和二級指針。解引用就是取出指針?biāo)赶虻刂诽幍闹?;二級指針就是存放一級指針地址的指針?/p>
字符函數(shù)和字符串函數(shù)
c 語言中對字符和字符串的處理很是頻繁,但是 c 語言本身是沒有字符串類型的,字符串通常放在常量字符串或者字符數(shù)組中。
動態(tài)內(nèi)存管理
動態(tài)內(nèi)存函數(shù)有 “malloc,calloc,realloc,free”。動態(tài)內(nèi)存一般有如下常見的錯誤:
對NULL指針的解引用操作
對動態(tài)開辟空間的越界訪問
對非動態(tài)開辟內(nèi)存使用free釋放
對同一動態(tài)內(nèi)存多次釋放
動態(tài)開辟內(nèi)存忘記釋放(內(nèi)存泄露)
如果你也喜歡編程,想學(xué)C/C++的話!如果你也想讓自己成為一個具有真材實料的厲害的程序員,不妨從現(xiàn)在開始!
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
