《LinuxC從入門到精通》.明日科技.第02章.C語言基礎(chǔ)_第1頁
《LinuxC從入門到精通》.明日科技.第02章.C語言基礎(chǔ)_第2頁
《LinuxC從入門到精通》.明日科技.第02章.C語言基礎(chǔ)_第3頁
《LinuxC從入門到精通》.明日科技.第02章.C語言基礎(chǔ)_第4頁
《LinuxC從入門到精通》.明日科技.第02章.C語言基礎(chǔ)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、C語言概述 C C語語言是一言是一種結(jié)構(gòu)種結(jié)構(gòu)化化語語言,言,它層它層次次清清晰,便于按模晰,便于按模塊塊化方式化方式組織組織程序,易于程序,易于調(diào)試調(diào)試和和維護維護。同。同時時,它還它還是一是一種種面向底面向底層層的的編編程程語語言,可以直接言,可以直接訪問內(nèi)訪問內(nèi)存的物理地址。要存的物理地址。要寫寫好一好一個個C C程序,必程序,必須須要要清清楚操作系楚操作系統(tǒng)統(tǒng)的工作原理,原因就在于操作系的工作原理,原因就在于操作系統(tǒng)統(tǒng)也也是用是用C C語語言言編寫編寫的。由于的。由于LinuxLinux系系統(tǒng)統(tǒng)是一是一種開種開源的操作系源的操作系統(tǒng)統(tǒng),就更可以通,就更可以通過學(xué)習(xí)該過學(xué)習(xí)該系系統(tǒng)統(tǒng)的的

2、內(nèi)內(nèi)核原理,核原理,來來加深加深對對C C語語言的理解言的理解,從從而能而能夠夠在此系在此系統(tǒng)統(tǒng)中更好的使用中更好的使用C C語語言言編編程。程。 C C語語言是一言是一種種通用的程序通用的程序設(shè)計語設(shè)計語言,廣泛的言,廣泛的應(yīng)應(yīng)用于系用于系統(tǒng)與應(yīng)統(tǒng)與應(yīng)用用軟軟件的件的開發(fā)開發(fā),具有如下特點:,具有如下特點:高效性高效性 一個一個C C語言源代碼編譯的過程是:首先,經(jīng)由預(yù)處理器,處理源代碼中的預(yù)處理部分,將代碼補充完整;然后,將補充語言源代碼編譯的過程是:首先,經(jīng)由預(yù)處理器,處理源代碼中的預(yù)處理部分,將代碼補充完整;然后,將補充完整的代碼送到編譯器,將其翻譯成匯編語言;最后,生成二進制的目標(biāo)代

3、碼。所謂的高效性,是指完整的代碼送到編譯器,將其翻譯成匯編語言;最后,生成二進制的目標(biāo)代碼。所謂的高效性,是指C C語言生成目標(biāo)代碼語言生成目標(biāo)代碼的質(zhì)量高,程序執(zhí)行效率高,并且具有友好的可讀性和編寫性。一般情況下,的質(zhì)量高,程序執(zhí)行效率高,并且具有友好的可讀性和編寫性。一般情況下,C C語言生成的目標(biāo)代碼只比匯編程序低語言生成的目標(biāo)代碼只比匯編程序低10%20%10%20%。 靈活性靈活性 C C語語言一共有言一共有3232個關(guān)鍵個關(guān)鍵字,字,9 9種種控制控制語語句,其句,其書寫書寫形式自由,形式自由,語語法不拘一格,可在原有法不拘一格,可在原有語語法基法基礎(chǔ)礎(chǔ)上上進進行再行再創(chuàng)創(chuàng)造、造、

4、復(fù)復(fù)合,合,從從而而給給程序程序員員更多的想象和更多的想象和發(fā)揮發(fā)揮的空的空間間,以此可以充分展,以此可以充分展現(xiàn)現(xiàn)出出C C語語言的言的靈靈活性。活性。 功能豐富功能豐富 C C語語言中不言中不僅僅具有多具有多種數(shù)種數(shù)據(jù)據(jù)類類型,型,還還可以使用豐富的可以使用豐富的運運算符和自定算符和自定義義的的結(jié)構(gòu)類結(jié)構(gòu)類型,用型,用它們來它們來表表達達多多種復(fù)雜種復(fù)雜的的數(shù)數(shù)據(jù)據(jù)結(jié)構(gòu)結(jié)構(gòu),完成所需要的豐富的功能。完成所需要的豐富的功能。 表達力強表達力強 此特點主要體現(xiàn)在,此特點主要體現(xiàn)在,C C語言的語法形式與人們所使用的語言形式相似,書寫形式自由,結(jié)構(gòu)規(guī)范,并且只需簡單的控制語言的語法形式與人們所使

5、用的語言形式相似,書寫形式自由,結(jié)構(gòu)規(guī)范,并且只需簡單的控制語句就可以輕松控制程序流程,滿足繁瑣的程序要求。語句就可以輕松控制程序流程,滿足繁瑣的程序要求。 移植性好移植性好 由于由于C C語言具有良好的移植性,從而使得語言具有良好的移植性,從而使得C C程序可以運行在不同的操作系統(tǒng)下,只需簡單的修改一下即可,使用程序可以運行在不同的操作系統(tǒng)下,只需簡單的修改一下即可,使用C C語言可語言可以進行跨平臺的程序開發(fā)操作。以進行跨平臺的程序開發(fā)操作。數(shù)據(jù)類型本講大綱:基本基本類類型型構(gòu)構(gòu)造造類類型型指指針類針類型型空空類類型型運算符和表達式本講大綱:運運算符算符表表達達式式運算符通過上面的章節(jié),了

6、解到在C語言中的數(shù)據(jù)類型的種類和各自的作用,在掌握了數(shù)據(jù)的數(shù)據(jù)類型后,還要掌握對這些數(shù)據(jù)進行的各種操作,如幾個數(shù)據(jù)之間的加、減、乘、除等基本的算術(shù)運算操作。那些對數(shù)據(jù)進行數(shù)值操作的操作符就稱之為運算符。而操作符和操作的數(shù)據(jù)就組成了表達式。2.3.1 運算符C語言的運算符可以分為算術(shù)運算符、關(guān)系運算符、邏輯運算符和位操作運算符等。下面簡單介紹一下這幾種運算符。算術(shù)運算符算術(shù)運算符主要用于完成基本的數(shù)值運算,如加(+)、減(-)、乘(*)、除(/)四則運算,算術(shù)運算符還包括取模運算符(%)、自增(+)和自減(-)運算法以及賦值運算符(=)。例2.1 在Linux系統(tǒng)中,使用vim編輯器編寫如下代碼

7、,掌握加、減、乘、除等算術(shù)運算符的基本應(yīng)用。(實例位置:光盤TMsl21)#includeint main(void)int a=2,b=3,c=6;printf(%d+%d=%dn,a,b,a+b);printf(%d-%d=%dn,c,b,+c-b);/*先將c自加*/printf(%d*%d=%dn,a,b,a*b);printf(%d % %d=%dn,b,a,b%a);printf(a=%dn,a+);/*輸出a的值,然后自加1*/printf(a=%dn,a);/*輸出此時a的值*/此例在vim編輯器中的編輯效果如圖2.1所示。 圖2.1 在vim編輯器中的顯示效果圖本示例實現(xiàn)了輸

8、出使用部分算術(shù)運算符構(gòu)成的表達式的值。其在Linux系統(tǒng)中的運行效果如圖2.1所示。 圖2.1 算術(shù)運算符的演示結(jié)果關(guān)系運算符所謂的關(guān)系運算符,是用于比較兩個數(shù)據(jù)間的關(guān)系,如大于、小于和等于。在C語言中關(guān)系運算符包括大于()、小于表達式表達式是由運算符和用于運算的數(shù)據(jù)組成,例如:4+6i-5a+(b*c+7)/2在程序中,表達式本身不起任何作用,只是用于返回表達式的結(jié)果,當(dāng)表達式的結(jié)果在程序中沒有用時,可以忽略表達式的結(jié)果。每一個表達式返回的結(jié)果值都是有數(shù)據(jù)類型的,表達式隱含的數(shù)據(jù)類型取決于組成表達式的變量和常量的數(shù)據(jù)類型?;绢愋蛿?shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型字符型實型(浮點型)

9、枚舉類型單精度型雙精度型數(shù)組類型結(jié)構(gòu)體類型共用體類型 著名的計算機科學(xué)家沃思曾提出一個公式:程序著名的計算機科學(xué)家沃思曾提出一個公式:程序= =算法算法+ +數(shù)據(jù)結(jié)構(gòu),而在數(shù)據(jù)結(jié)構(gòu),而在C C語言中,數(shù)據(jù)結(jié)語言中,數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型的形式出現(xiàn)的,構(gòu)是以數(shù)據(jù)類型的形式出現(xiàn)的,C C語言的數(shù)據(jù)類型可以分為基本類型、構(gòu)造類型、指針類型和語言的數(shù)據(jù)類型可以分為基本類型、構(gòu)造類型、指針類型和空類型。算法操作的對象是數(shù)據(jù),這些數(shù)據(jù)就是以數(shù)據(jù)類型的形式存在,數(shù)據(jù)有常量和變量之空類型。算法操作的對象是數(shù)據(jù),這些數(shù)據(jù)就是以數(shù)據(jù)類型的形式存在,數(shù)據(jù)有常量和變量之分,無論常量還是變量都是由這些數(shù)據(jù)類型作為修飾。如

10、圖分,無論常量還是變量都是由這些數(shù)據(jù)類型作為修飾。如圖2.12.1所示為數(shù)據(jù)類型的分類。所示為數(shù)據(jù)類型的分類?;绢愋?.2.1 基本類型基本類型是指其值不可以再分解為其它類型?;绢愋桶ㄕ?、字符型、實型(浮點型)和枚舉類型。以下分別介紹這幾種基本類型。整型數(shù)據(jù)整型數(shù)據(jù),顧名思義,就是沒有小數(shù)位或指數(shù)的數(shù)據(jù)類型。通過對整型數(shù)據(jù)的使用方法,可以分為整型常量和整型變量。整型常量是在運算中數(shù)據(jù)類型為整型、不可改變數(shù)值的數(shù)據(jù)??梢詰?yīng)用八進制、十進制、十六進制描述一個整型常量。下面分別介紹一下八進制、十進制和十六進制對整型常量的描述。所謂的八進制整常數(shù)是必須以0開頭,0作為八進制整常數(shù)的前綴,其數(shù)碼

11、取值范圍為07。八進制數(shù)通常沒有負(fù)數(shù)。例如八進制數(shù)可以寫成如下形式:015,表示成十進制數(shù)為13。所謂的十進制數(shù),就是我們在生活中經(jīng)常用到的常數(shù),沒有固定的前綴,數(shù)碼取值范圍為09,有正數(shù)也有負(fù)數(shù),例如可以寫成如下形式:94,-160。所謂十六進制的常數(shù)也存在前綴,為0 x或0X,數(shù)碼的取值范圍為從09表示正常的十個數(shù)字,而af或(AF)表示從十到十五。例如十六進制正常數(shù)可以表示成如下形式:0 xa1,表示成十進制數(shù)是161。整型變量可以分為基本整型、短整型、長整型。如下所示為對這幾種整型變量的描述?;菊蔚念愋驼f明符為int,在內(nèi)存中占有兩個字節(jié)。短整型的類型說明符為short int,此

12、時的int可以省略,以short表示短整型,在內(nèi)存中也占有兩個字節(jié)。長整型的類型說明符為long int,同樣可以省略int,以long來表示長整型,在內(nèi)存中占有4個字節(jié)。以上這三種整型數(shù)據(jù),又包括有符號和無符號兩類,有符號的整型在類型說明符前可以加上signed,無符號的整型在類型說明符前可以加上unsigned,若一個類型說明符前沒有signed與unsigned作為修飾,則默認(rèn)為是signed,有符號的。實型數(shù)據(jù)實型數(shù)據(jù)又可以稱之為浮點型數(shù)據(jù),實型常量有以下兩種表示形式:1十進制小數(shù)形式十進制小數(shù)形式是由數(shù)字和小數(shù)點組成的,可以寫成如下形式:12.9。2指數(shù)形式指數(shù)形式以e或者E為標(biāo)志,

13、一個實數(shù)可以有多種指數(shù)形式,但是在字母e(或E)之前的小數(shù)部分中,小數(shù)點左邊應(yīng)至少有一位非零的數(shù)字,而字母e(或E)的后面必須是整數(shù)形式。例如指數(shù)形式的實數(shù)可以寫成如下形式:314.0697e2。實型變量可以分為單精度型(float)、雙精度型(double)和長雙精度型(long double)三種,其中單精度型數(shù)據(jù)占有四個字節(jié),雙精度型數(shù)據(jù)占有八個字節(jié),長雙精度型數(shù)據(jù)占有十六個字節(jié)。字符型數(shù)據(jù)構(gòu)造類型一個構(gòu)造類型可以分解成若干個“成員”和“元素”。每個“成員”都是一個基本數(shù)據(jù)類型或者又是一個構(gòu)造類型。構(gòu)造類型可以有以下三種:數(shù)組類型數(shù)組類型是由若干個相同的數(shù)據(jù)類型的元素組成的,例如:int

14、 array100;char a20;數(shù)組前面的數(shù)據(jù)類型表示數(shù)組元素的類型,array和a是數(shù)組變量的名稱,中括號()里面的數(shù)字是數(shù)組的長度。其中數(shù)組的長度不可以是動態(tài)的,即數(shù)組的大小不在程序的運行過程中改變。結(jié)構(gòu)體類型結(jié)構(gòu)體類型是將不同類型的數(shù)據(jù)組合成一個有機的整體,以便于引用。這些組合在一個整體中的數(shù)據(jù)是存在著某種聯(lián)系的。結(jié)構(gòu)體類型以關(guān)鍵字struct開頭,如下所示為定義了一個學(xué)生信息的結(jié)構(gòu)體類型:struct studentint age;int number;char name20;double Chinese;double English;使用定義的結(jié)構(gòu)體類型聲明一個結(jié)構(gòu)體類型的變量

15、,如:struct student stu1,stu2;為結(jié)構(gòu)體類型的變量賦初值,如:stu1=21,101,”Lily”,98.5,99;指針類型在計算機中所有的數(shù)據(jù)都是存放在內(nèi)存中,為了能夠正確的訪問到這些內(nèi)存單元,在C語言中為每個內(nèi)存單元編上號,通過這些唯一的編號,就可以找到所需的內(nèi)存單元,那么這個內(nèi)存單元的編號就稱之為這個內(nèi)存單元的地址,這個地址就是所謂的指針。在C語言中,指針類型是最重要的數(shù)據(jù)類型,也是C語言最主要的風(fēng)格之一。利用指針變量可以訪問各種數(shù)據(jù)結(jié)構(gòu),可以很方便地使用數(shù)組和字符串;并能象匯編語言一樣處理內(nèi)存地址,從而編出精煉而高效的程序。指針變量是包含內(nèi)存地址的變量。通常的變

16、量是包含一個值,而指針變量包含的是某一數(shù)據(jù)類型的內(nèi)存地址。U注意:指針變量在使用之前需要聲明和初始化。(1)定義指針變量聲明一個指針變量的形式為:數(shù)據(jù)類型 *變量名;聲明中的“*”運算符表明被聲明的變量是指針變量。例如:int *pint;/聲明一個整型指針變量double *pd;/聲明一個長精度型指針變量char *pch;/聲明一個字符型指針變量聲明的上述三個指針,都只能指向某一特定的數(shù)據(jù)類型的變量或數(shù)組元素。如整型指針變量只能指向一個整型的變量或整型變量的數(shù)組元素。只有在聲明完指針變量后,才可以為該變量賦初值。如:int i=8;double d=19.6;char c=a;pint=

17、&i;pd=&d;pch=&c;上述賦值代碼中,“&”運算符稱之為取地址運算符,用于獲取變量所在的內(nèi)存地址。空類型所謂的空類型就是指沒有數(shù)據(jù)類型,空類型的關(guān)鍵字是void。一般情況下,不會有程序員定義一個空類型的數(shù)據(jù)。這個數(shù)據(jù)類型起到的作用主要就是:對函數(shù)返回值的限定對函數(shù)參數(shù)的限定通常一個函數(shù)都具有一個返回值,將值返回調(diào)用者。這個返回值一般情況下是具有特定的數(shù)據(jù)類型的,如整型int,字符型char等等。但是也有的函數(shù)不需要返回任何值,這時就應(yīng)用空類型void來設(shè)定函數(shù)的返回值類型。函數(shù)函數(shù)是C語言的基本單元。每一個函數(shù)都有其特定的功能,函數(shù)是由程序的可執(zhí)行代碼

18、構(gòu)成的。如下所示為函數(shù)的定義形式:函數(shù)返回值類型 函數(shù)名(參數(shù)列表)函數(shù)體(函數(shù)實現(xiàn)特定功能的可執(zhí)行代碼);例如,定義一個實現(xiàn)求解斐波那契數(shù)列的功能函數(shù)。int Fib(int n)if(n1)return -1;if(n=1|n=2)return 1;return Fib(n-1)+Fib(n-2);上述代碼,在函數(shù)體部分通過遞歸算法實現(xiàn)了計算斐波那契數(shù)列的功能。例2.4 在Linux系統(tǒng)下實現(xiàn)求解斐波那契數(shù)列,并輸出數(shù)列中任意第幾個數(shù)據(jù)的值,如,輸入3,會顯示數(shù)列中第三個數(shù)的數(shù)值2。(實例位置:光盤TMsl24)#includeint Fib(int n)if(n1)return -1;i

19、f(n=1|n=2)return 1;return Fib(n-1)+Fib(n-2);流程控制本講大綱:控制控制語語句句函函數(shù)調(diào)數(shù)調(diào)用用語語句句表表達達式式語語句句空空語語句句復(fù)復(fù)合合語語句句控制語句程序語句是用來向計算機系統(tǒng)發(fā)出操作指令的,由于C語言具有靈活性,并且表達力強的特點,通常在編譯的時候,一個C程序語句可以被翻譯成若干條機器指令。在C語言中,程序語句包括控制語句、函數(shù)調(diào)用語句、表達式語句、空語句和復(fù)合語句。下面分別對這幾種程序語句進行介紹。2.5.1 控制語句控制語句是指具有一定控制功能的程序語句。如條件控制語句、循環(huán)控制語句和選擇控制語句等。在C語言中總共有九種控制語句,分別如

20、下:(1)條件控制語句if(表達式)語句;else語句;(2)for循環(huán)控制語句for(循環(huán)變量初值;循環(huán)條件;修改循環(huán)變量)語句;(3)while循環(huán)控制語句while(循環(huán)控制條件)語句;(4)do-while循環(huán)控制語句do語句;while(循環(huán)條件)(5)switch多分支選擇語句函數(shù)調(diào)用語句所謂的函數(shù)調(diào)用語句是指在程序中調(diào)用已經(jīng)定義好的函數(shù)加一個分號構(gòu)成的語句。如:scanf(“%d”,&i);/格式輸入語句putchar(ch);/向終端輸出一個字符ch表達式語句表達式語句是由一個表達式所構(gòu)成的語句。在2.3節(jié)的運算符與表達式中已經(jīng)簡單介紹了關(guān)于表達式的概念。在程序語句中最

21、典型的表達式語句是賦值語句,如:i=46;表達式語句是由表達式加上分號所構(gòu)成的。在C語言中,一個程序語句必須以分號結(jié)尾??照Z句空語句是指只有一個分號的語句,如:;一個空語句表示什么操作都無需做。通常使用空語句時是用它來做被轉(zhuǎn)向點或者在循環(huán)語句中會出現(xiàn)這樣一條空語句,代表循環(huán)體不進行任何操作。復(fù)合語句復(fù)合語句是用“”大括號括起來的一些語句。在復(fù)合語句中含有多條語句。如:int sum,a=2;sum=a+8;printf(“sum=%dn”,sum);U注意:在C程序中語句都是以分號作為結(jié)尾,但是復(fù)合語句的大括號結(jié)尾不用加分號。預(yù)處理命令本講大綱:宏定宏定義義文件包含文件包含宏定義預(yù)處理命令是C語言

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論