時(shí)間:2018-07-13 00:00:00 來源:信盈達(dá) 作者:信盈達(dá)
表達(dá)式
表達(dá)式C語言中分為常量表達(dá)式,算術(shù)表達(dá)式,關(guān)系表達(dá)式,邏輯表達(dá)式,賦值表達(dá)式,逗號表達(dá)式和復(fù)合表達(dá)式etc。表達(dá)式可以分為左值和右值
左值(ell-value)可以出現(xiàn)在賦值運(yùn)算符的左邊或者右邊,變量就是一個(gè)左值表達(dá)式
右值(are-value)只能出現(xiàn)在賦值運(yùn)算符的右邊,數(shù)字字面值就是一個(gè)右值表達(dá)式。
語句
語句是C語言用于表達(dá)命令邏輯語法結(jié)構(gòu),主要分為表達(dá)式語句,語句塊,空語句,控制語句和特殊語句
變量
從語言的角度看,變量是一個(gè)左值,可以放在賦值運(yùn)算符的左邊接受一個(gè)值或者是右邊用來給別的變量賦值,同時(shí),變量也是一個(gè)表達(dá)式,這個(gè)表達(dá)式的值就是變量的值。此外,變量也可以從程序的本質(zhì)來理解,對于任何一個(gè)問題及其解決方案,都要用 一組數(shù)據(jù) 和 這組數(shù)據(jù)的變化 來描述,描述好了就可以用計(jì)算機(jī)解決,描述不了的計(jì)算機(jī)也解決不了。變量就是用來表示一組類似的相似數(shù)據(jù)的其中一種方法,是所有現(xiàn)代程序設(shè)計(jì)語言的基礎(chǔ)。
數(shù)據(jù)類型: C語言中,任何數(shù)據(jù)皆有其類型,就像水果可以被劃分為蘋果、橘子etc
常量:值不能更改的量,即柜子上一個(gè)上鎖的抽屜,里面存了什么就是什么,你知道,但你改不了
變量:值可以更改的量,即似柜子上一個(gè)沒鎖的抽屜,今天用來放小蘋果,明天放個(gè)大蘋果
常量的類型:定義常量時(shí)指定的這塊內(nèi)存存放的數(shù)據(jù)類型,即上鎖的抽屜里存的到底是蘋果還是橘子
常量的地址:存儲該常量的內(nèi)存區(qū)域的第一個(gè)byte的地址,即上鎖抽屜的編號
變量的類型:定義變量時(shí)指定的這個(gè)變量里面存儲的數(shù)據(jù)類型,即沒鎖的抽屜專門用來放蘋果還是放橘子
變量的地址:變量用來存儲數(shù)據(jù)的那塊內(nèi)存的首地址,即沒鎖抽屜的編號,因?yàn)槊總€(gè)地址在內(nèi)存中都是唯一的,所以變量的地址可以用來唯一的標(biāo)識變量
值傳遞:把一個(gè)變量里存儲的數(shù)據(jù)傳遞給另一個(gè)變量,即在另外一個(gè)沒鎖的抽屜里放一個(gè)之前一模一樣的蘋果
地址傳遞:把一個(gè)變量的地址傳遞給另一個(gè)變量,即在另外一個(gè)沒鎖的抽屜里放個(gè)紙條,上面寫著之前那個(gè)抽屜的編號
作用域:變量工作范圍的空間限定,即超過多遠(yuǎn)就不能直接打開抽屜,如果使用變量的代碼不在該變量的作用域,需要使用"值傳遞"或"地址傳遞"的方式獲得相應(yīng)數(shù)據(jù)再使用
生命周期:變量工作范圍的時(shí)間限定,即超過多久抽屜就被扔掉了,變量的生命周期一旦結(jié)束,它之前占據(jù)的內(nèi)存就會被重新用作它用,這個(gè)變量也就不再存在了
自動變量:不需要指定變量的存儲類型的變量,通常我們不進(jìn)行任何修飾的變量的就是自動變量,需要使用auto關(guān)鍵字,現(xiàn)在已很少使用
寄存器變量:希望將該變量存儲在寄存器中而不是內(nèi)存中,可以提高變量的讀取速度,需要使用register關(guān)鍵字,由于編譯器的智能化,基本沒有用了
全局變量:作用域是整個(gè)程序的變量,聲明在main之外,需要global 關(guān)鍵字來聲明,生命周期和進(jìn)程一樣長
局部變量:作用域是函數(shù)體的變量,聲明在函數(shù)體fcn(){}內(nèi),生命周期和函數(shù)一樣長
塊內(nèi)變量 :作用域在塊內(nèi)的變量,聲明在語句塊{}內(nèi),生命周期和語句塊一樣長
靜態(tài)變量 :生命周期和進(jìn)程一樣長的變量,限制了變量的作用域不會超出本文件,即全局變量被限制在本文件,局部和塊內(nèi)還是本來的作用域范圍,聲明需要使用static關(guān)鍵字
外部變量:該變量已經(jīng)在其他源文件中被定義過,被拿到此文件中使用,聲明一個(gè)外部變量需要使用extern關(guān)鍵字
宏
宏是C語言中使用#define關(guān)鍵字定義的一個(gè)別名,在預(yù)處理階段會進(jìn)行宏替換,以字符串形式原模原樣的替換被定義的字符串
#define add (plus) //程序中所有的add組合都會被替換成(plus)
C語言內(nèi)置宏
這些宏長用于調(diào)試代碼,C語言的很多宏都使用__XXX__格式,Linux的API里很多宏都使用XXX_XXX格式,所以當(dāng)使用自定義宏的時(shí)候,應(yīng)該使用其他格式避免重名,宏只是進(jìn)行字符組合的替換,在預(yù)處理階段就做完了,如果除了bug很難找。
__LINE__ //該行代碼的所在行號 __FILE__ //源文件的文件名 __DATE__ //源文件被翻譯到代碼時(shí)的日期。 __TIME__ //源代碼翻譯到目標(biāo)代碼的時(shí)間 __STDC__ //如果實(shí)現(xiàn)是標(biāo)準(zhǔn)的,則宏__STDC__含有十進(jìn)制常量1。如果它含有任何其它數(shù),則實(shí)現(xiàn)是非標(biāo)準(zhǔn)的。
嵌入式C語言是作為嵌入式Linux開發(fā)的基礎(chǔ)語言,也是學(xué)習(xí)嵌入式的必備語言。
免費(fèi)領(lǐng)取試聽卡
申請已經(jīng)提交
老師會馬上給您安排試聽課程!
申請出錯(cuò)了
您可以加老師QQ:914865590報(bào)名咨詢!