計(jì)算機(jī)等級考試二級C語言知識點(diǎn)_第1頁
計(jì)算機(jī)等級考試二級C語言知識點(diǎn)_第2頁
計(jì)算機(jī)等級考試二級C語言知識點(diǎn)_第3頁
計(jì)算機(jī)等級考試二級C語言知識點(diǎn)_第4頁
計(jì)算機(jī)等級考試二級C語言知識點(diǎn)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第 24 頁 共 24 頁思維導(dǎo)圖1:C語言程序設(shè)計(jì)知識結(jié)構(gòu)第一課 C語言程序設(shè)計(jì)基礎(chǔ)思維導(dǎo)圖2:第一課 C語言程序設(shè)計(jì)基礎(chǔ)本課主要知識點(diǎn):1.知識點(diǎn):C程序基礎(chǔ)l C語言是一種結(jié)構(gòu)化程序設(shè)計(jì)語言。三種基本結(jié)構(gòu):順序、選擇、循環(huán)。2.知識點(diǎn):C語言程序的構(gòu)成l C程序是由函數(shù)構(gòu)成的,一個(gè)C程序有且僅有一個(gè)main函數(shù)。一個(gè)函數(shù)由兩部分組成:函數(shù)的首部和函數(shù)體。函數(shù)體包括聲明部分和執(zhí)行部分。一個(gè)C程序總是從main函數(shù)開始執(zhí)行(即程序的入口),由main函數(shù)結(jié)束,(即程序的出口)。3.知識點(diǎn):標(biāo)識符l 命名規(guī)則: 標(biāo)識符中只能包含字母 (a-z,A-Z),數(shù)字(0-9),下劃線(_)。第一個(gè)字符

2、必須是字母或下劃線。類型說明符:int,float,double等語句定義符:if,for,while等l 分類都是小寫 關(guān)鍵字(32個(gè)) (有固定含義,不可改變)庫函數(shù)的名字:printf , scanf 等編譯預(yù)處理命令名:include等 預(yù)定義標(biāo)識符 (有特殊含義,可以改變) 用戶自定義的標(biāo)識符 格式合法,不能使用關(guān)鍵字,見名知意4.知識點(diǎn):數(shù)據(jù)類型5.知識點(diǎn):常量l 整型常量十進(jìn)制整常數(shù):沒有前綴,其數(shù)碼為0-9。例如65535,-568八進(jìn)制整常數(shù):以0開頭,其數(shù)碼為0-7。例如015十六進(jìn)制整常數(shù):以0X或0x開頭,其數(shù)碼為0-9,A-F或a-f。例如0x2A長整型數(shù):整型常數(shù)后

3、綴為L或l。例如358000L無符號數(shù):整型常數(shù)后綴為U或u。例如158ul 實(shí)型常量的形式小數(shù)形式:必須有小數(shù)點(diǎn),小數(shù)點(diǎn)前后不能同時(shí)沒有數(shù)字。指數(shù)形式:aEn(其中a表示十進(jìn)制數(shù),E階碼標(biāo)志,n階碼)。E前E后必須有數(shù)字,E后必為整數(shù),可以帶符號。例如2.1E-3、5E8l 字符常量:用單引號括起來的一個(gè)字符。包括普通字符常量和轉(zhuǎn)義字符。普通字符常量:如a、A、1。轉(zhuǎn)義字符:由一對單引號引起來的以開頭的若干字符的組合。如n表示回車換行、表示反斜線符、表示單引號符、”表示雙引號、ddd表示八進(jìn)制數(shù)、xhh表示十六進(jìn)制數(shù)。6.知識點(diǎn):變量l 整型變量和實(shí)型變量以考試標(biāo)準(zhǔn)Viusal c+6.0為

4、例,說明各類型變量所占的位數(shù)。 類型所占位數(shù)所占字節(jié)數(shù)類型所占位數(shù)所占字節(jié)數(shù)short162unsigned int324int324unsigned long324long324float324unsigned short162double6487.知識點(diǎn):ASCII碼l 0的ASCII碼值為48;A的ASCII碼值為65;a的ASCII碼值為97。l 大寫字母與小寫字母的ASCII碼值相差32。8.知識點(diǎn):運(yùn)算符的優(yōu)先級級別由大到小:(邏輯)非 >算(術(shù)運(yùn)算符) >關(guān)(系運(yùn)算符) >(邏輯)與 >(邏輯)或 >條(件運(yùn)算符) >賦(值運(yùn)算符)9.知識點(diǎn):

5、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符l 一般形式:(類型說明符)(表達(dá)式)l 功能:把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型10.知識點(diǎn):算術(shù)運(yùn)算符: +、*、/、%:參與運(yùn)算的量均為整型。/:當(dāng)除號左右兩邊都是整數(shù)的時(shí)候,商也要是整數(shù),如果不是整數(shù)則舍棄小數(shù)部分。當(dāng)參與運(yùn)算量有一個(gè)為實(shí)型,則商為double型。11.知識點(diǎn):逗號表達(dá)式l 一般形式:表達(dá)式1,表達(dá)式2表達(dá)式nl 求值過程:自左向右依次求解,最后一個(gè)表達(dá)式的值為整個(gè)逗號表達(dá)式的值。12.知識點(diǎn):自增自減運(yùn)算符+i i自加1后再參與運(yùn)算 i+ i參與運(yùn)算后再自加1-i i自減1后再參與運(yùn)算 i- i參與運(yùn)算后再自減1+和- -的運(yùn)算對象只

6、能為變量,不能是常量或表達(dá)式。13.知識點(diǎn):賦值表達(dá)式l 一般形式:變量名=表達(dá)式l 賦值運(yùn)算符左邊必須是變量,而不是表達(dá)式。14.知識點(diǎn):位運(yùn)算l 按位與運(yùn)算&規(guī)則:0&0=0 0&1=0 1&0=0 1&1=1l 按位或運(yùn)算|規(guī)則:0|0=0 0|1=1 1|0=1 1|1=1l 按位異或運(yùn)算規(guī)則:00=0 01=1 10=1 11=0l 求反運(yùn)算規(guī)則:0=1 1=0l 左移運(yùn)算<<規(guī)則:把<<左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,高位丟棄,低位補(bǔ)0。左移一位相當(dāng)于該數(shù)乘以2。左移n位相當(dāng)于該數(shù)乘以2n。l 右移運(yùn)算>&

7、gt;把>>左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位。高位補(bǔ)0,低位丟棄。右移一位相當(dāng)于該數(shù)除以2。右移n位相當(dāng)于除以2n。15.知識點(diǎn):關(guān)系運(yùn)算符和表達(dá)式16.知識點(diǎn):邏輯運(yùn)算符和表達(dá)式l 邏輯運(yùn)算符優(yōu)先級從高到低:!、&&、|l 邏輯運(yùn)算的真值表aba&&ba|b!a真真真真假真假假真假假真假真真假假假假真l 進(jìn)行邏輯運(yùn)算時(shí),若&&左邊的值為0,則不再對右邊的運(yùn)算對象進(jìn)行運(yùn)算,整個(gè)表達(dá)式的值為0。l 若|左邊的運(yùn)算對象的值為1,則不再對右邊的運(yùn)算對象進(jìn)行運(yùn)算,整個(gè)表達(dá)式的值為1。17.知識點(diǎn):格式輸入函數(shù)printf()(1)一般形式

8、:printf(“格式控制字符串”,輸出列表);(2)遇到控制字符,按照控制字符的規(guī)定輸出,遇到非格式字符串按原樣輸出。18.知識點(diǎn):格式輸入函數(shù)scanf()(1)一般形式:scanf(“格式控制字符串”,地址列表);(2)若格式控制字符串中有非格式字符串,則按原樣輸入。若格式控制字符串中(3)在輸入字符數(shù)據(jù)時(shí),若格式控制字符串中無非格式字符,則認(rèn)為所有輸入的字符均為有效字符。空格會被當(dāng)作字符賦值給變量。(4)格式字符串l 一般形式:%*輸入數(shù)據(jù)寬度長度類型l *表示該輸入項(xiàng),讀入后不賦予相應(yīng)的變量。l 輸入數(shù)據(jù)寬度:用十進(jìn)制數(shù)指定輸入的字符數(shù)。l 當(dāng)定義的變量類型和scanf中“格式符”類

9、型不一致時(shí)(這里只限定在字符型和整型兩種類型,其他數(shù)據(jù)類型不可以。)整型和字符型之間通過ASCALL可以相互轉(zhuǎn)化。19.知識點(diǎn):字符輸出函數(shù)putchar()一般形式:putchar(a);putchar(101);20.知識點(diǎn):字符輸入函數(shù)getchar()一般形式:getchar();或ch=getchar();l getchar經(jīng)常作為while循環(huán)條件,判斷輸入哪一個(gè)字符時(shí),循環(huán)結(jié)束。例如,輸入字符串,直到輸入0,程序結(jié)束,則可寫成while( getchar()!='0')第二課 選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)本課重要知識點(diǎn):1.知識點(diǎn):if語句l if(表達(dá)式),其中表達(dá)式可以

10、是任意合法的C語言表達(dá)式。l 對于單個(gè)if語句,其后跟隨的受if控制的只能是1個(gè)語句或者是1個(gè)復(fù)合語句。l 當(dāng)多個(gè)if(表達(dá)式)單分支形式并行出現(xiàn)時(shí),其執(zhí)行順序是:先判斷第一if單分支的條件,如果為真,執(zhí)行其后面的語句,執(zhí)行完后,繼續(xù)向下執(zhí)行。判斷第二個(gè)if單分支語句,依次類推。如果第一個(gè)if表達(dá)式的值為假,則不執(zhí)行其后的語句,而去判斷第二個(gè)if單分支條件。2.知識點(diǎn):if語句的嵌套l 內(nèi)嵌結(jié)構(gòu)中,else總是與前面最近的且未曾配對的if語句配對,組成一對if-else語句。3.知識點(diǎn):條件表達(dá)式l 一般形式:表達(dá)式1?表達(dá)式2:表達(dá)式3l 執(zhí)行過程:表達(dá)式1的值為真,條件表達(dá)式取表達(dá)式2的值

11、;表達(dá)式1的值為假,條件表達(dá)式取表達(dá)式3的值。4.知識點(diǎn):switch語句l switch語句的圓括號中的表達(dá)式的值必須是整型或字符型,不能為實(shí)型。l case后的表達(dá)式可以是求得整型和字符型的常量表達(dá)式,但不能含有變量。l default的位置對程序的執(zhí)行沒有影響。l 當(dāng)switch語句和循環(huán)語句(for、while)時(shí),要注意switch里面的break語句退出的位置。解決這一問題的方法是:首先劃分結(jié)構(gòu),確定循環(huán)的語句體包括哪些語句。然后,在繼續(xù)劃分循環(huán)體內(nèi)的語句,如果循環(huán)體內(nèi)的語句只有一條switch語句,其內(nèi)部出現(xiàn)了break,遇到break,要結(jié)束當(dāng)前switch語句的執(zhí)行,繼續(xù)執(zhí)行

12、下一次循環(huán)。5.知識點(diǎn):while,do-while,for三種循環(huán)結(jié)構(gòu)l 循環(huán)體部分可以只有一條空語句,不做任何操作。l while, for如果第一次判斷表達(dá)式的值為0,則循環(huán)一次也不執(zhí)行。即while循環(huán)體最少執(zhí)行0次。do-while循環(huán)體最少執(zhí)行1次6.知識點(diǎn):for語句l 表達(dá)式1、表達(dá)式2、表達(dá)式3可以缺省,但兩個(gè)分號不能省略。l 表達(dá)式1和表達(dá)式3也可以是逗號表達(dá)式。l 注意區(qū) 賦值語句和判斷語句l 表達(dá)式1、表達(dá)式2、表達(dá)式3執(zhí)行的過程7.知識點(diǎn):循環(huán)嵌套8.知識點(diǎn):break語句l 功能:跳出整個(gè)switch語句;跳出循環(huán)體,防止死循環(huán)。l break語句只能出現(xiàn)在swit

13、ch、while、do-while、for循環(huán)中,不能出現(xiàn)在其他地方。l 作用范圍:所在循環(huán)體從屬的最內(nèi)層循環(huán),而不是外層的某個(gè)循環(huán)。9.知識點(diǎn):continue語句l 功能:結(jié)束本次循環(huán),接著判斷是否繼續(xù)下一次循環(huán)。l continue語句只能出現(xiàn)在while、do-while、for循環(huán)中。l 作用范圍:所在循環(huán)體從屬的最內(nèi)層循環(huán),而不是外層的某個(gè)循環(huán)。第三課 數(shù)組本課重要知識點(diǎn):1.知識點(diǎn):一維數(shù)組的定義2.知識點(diǎn):一維數(shù)組元素的引用3.知識點(diǎn):一維數(shù)組的初始化l 順序列出數(shù)組元素的全部初值,例如int a5=1,2,3,4,5;l 只給數(shù)組的前面一部分元素設(shè)定初值,未賦初值的元素自動取

14、0值。例如,int a5=1,2;l 對全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組元素的個(gè)數(shù)。例如,int a=1,2,3,4,5;4.知識點(diǎn):二維數(shù)組的初始化l 按行分段給二維數(shù)組賦初值l 按行連續(xù)賦值l 對部分元素賦初值,未賦初值的元素自動取0值l 若對全部元素賦初值,則第一維的長度可以不指定5.知識點(diǎn):二維數(shù)組和for語句6.知識點(diǎn):字符串定義:由“”引起來的,由若干個(gè)字符所組成的序列。字符串的結(jié)束標(biāo)志:0如字符串“china”,在內(nèi)存中存儲形式是china0該字符串的長度為5字節(jié),所占的存儲空間為6字節(jié)。7.知識點(diǎn):字符數(shù)組的定義及初始化l 字符數(shù)組名是地址常量,不能賦值給數(shù)組名。8.知識點(diǎn)

15、:字符數(shù)組的輸入與輸出9.知識點(diǎn):字符串處理函數(shù)第四課 指針本課重要知識點(diǎn):1.知識點(diǎn):指針的概念與指針變量l 指針就是地址。指針變量是用來存儲地址,而一般變量是用來存儲數(shù)值。2. 知識點(diǎn):指針的引用l 指針的引用是通過兩個(gè)運(yùn)算符實(shí)現(xiàn)“&”和“*”實(shí)現(xiàn)的 &是取地址符號,它的一半格式是:&變量名。例如:int i ; &i表示取i的地址。 *是取值運(yùn)算符,它的一般格式:*指針變量名。例如:int i=10,*p=&i; *p表示取i的值103.知識點(diǎn):指針變量的初始化l 指針變量在使用前必須要初始化,把一個(gè)具體的地址賦給它,否則引用時(shí)會出錯(cuò),如果不指向任

16、何數(shù)據(jù)就賦“空值”NULL。l 指針變量兩種初始化方法:方法一:int a=2,*p=&a;(定義的同時(shí)初始化) 方法二:int a=2,*p;p=&a;(先定義后初始化)4.知識點(diǎn):指針的運(yùn)算l *p+和(*p)+之間的差別:*p+是地址變化,(*p)+是指針變量所指的數(shù)據(jù)變化。一個(gè)指針變量加一個(gè)整數(shù)不是簡單的數(shù)學(xué)相加,而是連續(xù)移動若干地址。當(dāng)兩個(gè)指針指向同一數(shù)組時(shí),它們可以比較大小進(jìn)行減法運(yùn)算。例如:int a10,*p; p=a; p+;表示p移動一個(gè)存儲單元,p指向a1,只有當(dāng)指著指向數(shù)組元素時(shí),指針的運(yùn)動才有意義。5:知識點(diǎn):指針與數(shù)組l 指針與一維數(shù)組數(shù)組名代表數(shù)組

17、的首地址。一維數(shù)組中,第一個(gè)元素的地址即為該數(shù)組的起始地址。建立指針變量與一維數(shù)組的聯(lián)系:例如:int a6,*pa;pa=a;或pa=&a0;說明:數(shù)組名a代表該數(shù)組的首地址,也即a0的地址。 pa=a;或pa=&a0;使pa保存了數(shù)組a的首地址,pa,a,&a0都指向一個(gè)地址。 以上操作可等價(jià)于 int a6,*pa=a; 如果pa=&a3;表示*pa的值就是a3的地址。注意:數(shù)組a是一個(gè)地址常量,它永遠(yuǎn)指向數(shù)組的首地址,不能重新賦值。因此 a=&i;或a+都是錯(cuò)誤的。6.知識點(diǎn):用指針訪問數(shù)組元素l 通過指針引用數(shù)組元素例如:int *p,a5;p

18、=&a0;說明:指針變量p指向了數(shù)組元素a0,可以使用訪問運(yùn)算符“*”來引用變量a0; 例:*p=18;等價(jià)于a0=18; *(p+1)表示a1 p+1表示&a1l 通過數(shù)組的首地址引用數(shù)組元素例如:int a5;說明:a是數(shù)組名,表示收地址,可以把a(bǔ)當(dāng)做一個(gè)指針常量。*a等價(jià)與a0,*(a+1)等價(jià)與a1;a等價(jià)于&a0,a+1等價(jià)與&a1;l 用帶下標(biāo)的指針變量引用一維數(shù)組元素例如:int *p,a5; p=a;說明:p0表示p指針指向的內(nèi)存單元,p1表示p指向的內(nèi)存單元 ai的等價(jià)引用方法:ai、pi、*(a+i)、*(p+i) ai的地址等價(jià)引用方法:&

19、amp;ai、&pi、a+i、p+i7.知識點(diǎn):指針與二維數(shù)組l 任何一個(gè)二維數(shù)組均由若干個(gè)一維數(shù)組組成,a0、a1和a2是一維數(shù)組名,數(shù)組名代表數(shù)組的首地址,因此a0就代表數(shù)組元素a00的地址,也即&a00。注意:a的值與a0相同,但它們的基類型不同,a可以等價(jià)于一個(gè)二維指針,而a0是一維指針。因此 int a34,*p=a;錯(cuò)誤取數(shù)組元素aij的地址的幾種方法:&aij;ai+j; *(a+i)+j;l 指針數(shù)組的定義方式:*指針數(shù)組名常量表達(dá)式;如:int *p3;l 行指針的一般定義形式如下:類型名 (*指針數(shù)組名)常量表達(dá)式;如:int (*p)2;l 指針數(shù)

20、組與行指針的區(qū)別1、int *p3;定義的是指針數(shù)組,表示一個(gè)數(shù)組,含有3個(gè)元素p0、p1、p2,且這3個(gè)元素只能存放整型元素的地址 2、int (*p)3;定義的是行指針,表示一個(gè)指針變量,它僅有一個(gè)存儲空間,只能存放一個(gè)長度為2的一維數(shù)組指針。8.知識點(diǎn):指針與函數(shù)9.知識點(diǎn):指針與字符串l 可以通過字符指針來處理字符串 “三名主義”(考試的重點(diǎn)) 數(shù)組名:表示第一個(gè)元素的地址。數(shù)組名是地址常量名,不能進(jìn)行賦值和自加(減)等運(yùn)算。(考了很多次) 函數(shù)名:表示該函數(shù)的入口地址。 字符串常量名:表示第一個(gè)字符的地址。第五課 函數(shù)本課重要知識點(diǎn):1、知識點(diǎn):函數(shù)的概述l 源程序是由函數(shù)組成的,函

21、數(shù)由函數(shù)首部與函數(shù)體組成,函數(shù)體包括聲明部分和執(zhí)行語句部分組成。l 語言程序可以由多個(gè)源程序組成,其中一個(gè)源程序文件包含main函數(shù),其他函數(shù)可以寫在另外的源程序文件中,為單獨(dú)文件,并且可以單獨(dú)編譯。程序的執(zhí)行總是從main函數(shù)開始,完成對其它函數(shù)的調(diào)用后再返回到main函數(shù),最后由main函數(shù)結(jié)束整個(gè)程序。main 函數(shù)可以調(diào)用其它函數(shù),而不允許被其它函數(shù)調(diào)用。一個(gè)源程序必須有,也只能有一個(gè)主函數(shù)main。l 在一個(gè)函數(shù)的函數(shù)體內(nèi),不能再定義另一個(gè)函數(shù),即不能嵌套定義。2、知識點(diǎn):函數(shù)的定義l 函數(shù)返回return語句的一般形式:return 表達(dá)式;或return (表達(dá)式);在函數(shù)中允許

22、有多個(gè)return語句,但每次只能有一個(gè)return語句被執(zhí)行。3、知識點(diǎn):形參和實(shí)參及函數(shù)調(diào)用l 形參出現(xiàn)在函數(shù)定義中(即定義函數(shù)時(shí)函數(shù)名后面括號中的參數(shù)),實(shí)參出現(xiàn)在主調(diào)函數(shù)中(調(diào)用函數(shù)時(shí)函數(shù)名后面括號中的參數(shù))l 形參在本函數(shù)體內(nèi)都可以使用,離開該函數(shù)則不能使用。實(shí)參在主調(diào)函數(shù)中內(nèi)有效,進(jìn)入被調(diào)函數(shù)后,實(shí)參變量也不能使用。(注:在進(jìn)行函數(shù)調(diào)用時(shí),函數(shù)必須有確定的值)l 實(shí)參向形參單向傳遞數(shù)值,不能將形參的值反向的傳送給實(shí)參。實(shí)參和形參在數(shù)據(jù)上、類型上、順序上要一致。在函數(shù)調(diào)用過程中,形參的變化不會改變實(shí)參的變化。l 在傳遞數(shù)值時(shí),形參和實(shí)在分別占據(jù)不同的存儲單元(形參變量只有在被調(diào)用時(shí)才

23、分配內(nèi)存單元,調(diào)用結(jié)束后,即刻釋放分配的內(nèi)存單元) “傳值”與“傳址”的區(qū)別:傳數(shù)值的話,形參的變化不會改變實(shí)參的變化。傳地址的話,形參的變化就有可能改變實(shí)參所對應(yīng)的量。4、知識點(diǎn):函數(shù)調(diào)用的一般形式和調(diào)用方式l 函數(shù)調(diào)用的一般形式為:函數(shù)名(實(shí)際參數(shù)表);實(shí)參可以是常數(shù)、變量或其他構(gòu)造類型數(shù)據(jù)及表達(dá)式,也可以沒有(當(dāng)為無參函數(shù)時(shí))l 函數(shù)調(diào)用的方式:(1)函數(shù)表達(dá)式:函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式運(yùn)算。例如:z=max(x,y);(2)函數(shù)語句:函數(shù)調(diào)用的一般形式上加上分號。例如:printf(“%dn”,a);(3)函數(shù)實(shí)參:函數(shù)作為另一個(gè)函數(shù)調(diào)用的實(shí)際參數(shù)出

24、現(xiàn)。例如:printf(“%d”,max(x,y);l 程序從main函數(shù)進(jìn)入,上往下執(zhí)行,當(dāng)碰到函數(shù)名后,把值傳給調(diào)用函數(shù),當(dāng)程序得到了返回值或調(diào)用函數(shù)結(jié)束,再順序往下執(zhí)行,最后到main函數(shù)結(jié)束。5、知識點(diǎn):函數(shù)的聲明及其位置l 函數(shù)要“先定義后調(diào)用”,或“先聲明再調(diào)用后定義”。函數(shù)的聲明一定要有函數(shù)名、函數(shù)返回值類型、函數(shù)參數(shù)類型,但不一定要有形參的名稱。一般形式為:類型說明符 被調(diào)函數(shù)名(類型 形參,類型 形參); 或 類型說明符 被調(diào)函數(shù)名(類型,類型);注意:其末尾“;”不能省例如:int max(int a,int b); 或 int max(int ,int); 兩者功能相同l

25、 省去主調(diào)函數(shù)中對被調(diào)函數(shù)的函數(shù)說明的幾種情況:(1)被調(diào)函數(shù)的返回值是整型或字符型時(shí)(返回值自動按整型處理)(2)當(dāng)被調(diào)函數(shù)的函數(shù)定義在主調(diào)函數(shù)之前時(shí)(3)在所有函數(shù)定義之前,在函數(shù)外預(yù)先說明了各個(gè)函數(shù)的類型6、知識點(diǎn):函數(shù)的嵌套調(diào)用l C語言中不允許作嵌套的函數(shù)定義,但是允許在一個(gè)函數(shù)的斷定儀中出現(xiàn)對另一個(gè)函數(shù)的調(diào)用,即嵌套調(diào)用。7、知識點(diǎn):函數(shù)的遞歸調(diào)用l 函數(shù)直接或間接地調(diào)用自己稱為函數(shù)的遞歸調(diào)用。遞歸調(diào)用必須有一個(gè)明確的結(jié)束遞歸的條件。在做遞歸題時(shí)可把遞歸的步驟一步步寫下來,不要弄顛倒了。8、知識點(diǎn):局部變量和全局變量l 在一個(gè)函數(shù)內(nèi)部或復(fù)合語句內(nèi)部定義的變量,它只在本函數(shù)范圍內(nèi)有效

26、,也就是說只有在本函數(shù)內(nèi)才能使用它們,在函數(shù)以外是不能使用這些變量的。這稱為局部變量,局部變量又稱為內(nèi)部變量。函數(shù)的形參也屬于局部變量。l 在函數(shù)外部定義的變量,稱為全局變量,又稱為外部變量。全局變量可以被本文件的其他函數(shù)所共用。9知識點(diǎn):變量存儲類別(auto變量、register變量、static變量)Ø 靜態(tài)變量(static):(1)在編譯時(shí)分配存儲空間,所占存儲單元直到程序結(jié)束時(shí)才釋放,它的值在程序運(yùn)行過程中一直存在,且變量的初始化只進(jìn)行一次。(2)static說明符可以用于全局變量,也可用于局部變量(auto和resgiter不可以定義全局變量)但是,當(dāng)它說明變量后,只要

27、這個(gè)變量還在程序中存在,那么不管用到還是沒有用到,它都將會占用內(nèi)存單元。Ø 自動變量(auto)(1)自動變量的存儲空間是當(dāng)程序執(zhí)行到定義它的函數(shù)或語句塊時(shí)才分配,當(dāng)函數(shù)執(zhí)行結(jié)束后自動釋放,變量的值也就不再存在。(2)局部變量的存儲類別默認(rèn)為auto,可以省略不寫,但它不能定義全局變量。Ø 寄存器變量(register):12、知識點(diǎn):數(shù)組與函數(shù)l 數(shù)組用作函數(shù)參數(shù)有兩種形式:把數(shù)組元素(下標(biāo)變量)作為實(shí)參使用和把數(shù)組名作為函數(shù)的形參和實(shí)參使用。l 數(shù)組元素作函數(shù)的實(shí)參與普通變量并無區(qū)別,所進(jìn)行的傳遞是值,形參變量和實(shí)參變量占據(jù)由編譯系統(tǒng)分配的兩個(gè)不同的內(nèi)存單元;l 數(shù)組名

28、作為函數(shù)參數(shù)時(shí),所進(jìn)行的傳遞是地址(相當(dāng)于把實(shí)參數(shù)組的首地址賦予形參數(shù)組名或指針名),形參數(shù)組與實(shí)參數(shù)組為同一數(shù)組,共同擁有一段內(nèi)存單元; 13指針與函數(shù)l 函數(shù)指針變量是指向函數(shù)的指針變量。定義的一般形式為: 類型說明符 (*指針變量名)(); 例如: int (*pf)();調(diào)用函數(shù)的一般形式:(*指針變量名)(實(shí)參表) 例如:z=(*p)(x,y); Ä注: (*指針變量名)中的“()”不能少l 函數(shù)指針變量不能進(jìn)行算術(shù)運(yùn)算。l 指針型函數(shù)是指返回指針值的函數(shù)。定義的一般形式為:類型說明符 *函數(shù)名(形參表) 例如:int *ap(int x,int y)第五課 結(jié)構(gòu)體、鏈表與

29、共用體本課重要知識點(diǎn):1.知識點(diǎn):用typedef定義類型l 功能:為已有數(shù)據(jù)類型取別名l 類型定義形式: typedef 舊類型名 新類型名;(例如:typedef double D ; )注意:(1) 定義的新名只是原名的一個(gè)別名,并不是建立一個(gè)新的數(shù)據(jù)類型;(2) 用新名和原名定義的對象具有相同的性質(zhì)和效果。2. 知識點(diǎn):結(jié)構(gòu)體變量的定義具體形式實(shí)例說明形式1struct 結(jié)構(gòu)體名類型標(biāo)識符 成員名;類型標(biāo)識符 成員名; .;struct 結(jié)構(gòu)體名 變量名表列;struct student char num20;char name20; char sex;float score4;str

30、uct student stu1,stu2;特點(diǎn):先定義類型,后定義變量注意:定義變量時(shí),必須以struct student 開頭,缺一不可形式2struct 結(jié)構(gòu)體名 類型標(biāo)識符 成員名; 類型標(biāo)識符 成員名; .變量名表列;struct student char num20;char name20; char sex;float score4; stu1,stu2;特點(diǎn):定義類型的同時(shí)定義變量注意:之后再定義同類型變量時(shí),也必須必須以struct student 開頭形式3struct 類型標(biāo)識符 成員名;類型標(biāo)識符 成員名; .變量名表列;struct char num20;char n

31、ame20; char sex;float score4; stu1,stu2;特點(diǎn):定義類型的同時(shí)定義變量注意:此形式省略了結(jié)構(gòu)體名,預(yù)示著后續(xù)程序中將不再定義該類型變量形式4typedef struct 結(jié)構(gòu)體名 類型標(biāo)識符 成員名; 類型標(biāo)識符 成員名; . STU;STU 變量名表列;typedef struct student char num20;char name20; char sex;float score4; STU;STU stu1,stu2;特點(diǎn):先定義類型,后定義變量注意:用STU或struct student定義變量具有同等效果,用STU形式簡潔方便3.知識點(diǎn): 結(jié)

32、構(gòu)體變量各成員的引用l 引用結(jié)構(gòu)體變量的成員的方法是:結(jié)構(gòu)體變量名成員名 (例如:stu1.sex)l 結(jié)構(gòu)體指針變量引用成員的方法是:形式1:(*指針變量名)成員名 (例如:(*p).num)形式2: 指針變量名->成員名 (例如:p->num)l 運(yùn)算符級別,注意:()和->和 . 同級別,均大于*設(shè)有:struct student char num;char name20; struct date int year,mon,day birth;float score4;struct student *p,stu1;p=&stu1;成員類型成員操作方式說明普通變量

33、例如:引用成員變量num直接賦值:stu1.num=201101;間接賦值:p->num=201101輸入:scanf(“%d”,& stu1.num);輸出:printf(“%d”,stu1.num);數(shù)組例如:引用成員數(shù)組元素score0賦值:stu1.score0=75;間接賦值:p-> score0=75;輸入:scanf(“%f”,& stu1. score0);輸出:printf(“%f”,stu1. score0);字符串例如:字符數(shù)組成員作為字符串name賦值:strcpy(,”zhangsan”);間接賦值:strcpy(p-&g

34、t;.name,”zhangsan”);輸入:scanf(“%s”, );輸出:printf(“%s”,);%s作為格式控制時(shí),scanf和printf的輸入和輸出項(xiàng)均為地址結(jié)構(gòu)體嵌套例如:引用內(nèi)嵌結(jié)構(gòu)體變量birth的成員year賦值:stu1.birth.year=1989;間接賦值:p-> birth.year=1989;輸入:scanf(“%d”,& stu1. birth.year)輸出:printf(“%d”,stu1. birth.year)4.知識點(diǎn): 結(jié)構(gòu)體變量與函數(shù)調(diào)用l 將一個(gè)結(jié)構(gòu)體變量的值傳遞給另一個(gè)函數(shù),有3個(gè)方法:

35、(1)用結(jié)構(gòu)體變量的成員作參數(shù)。例如,用stu1.num作實(shí)參,將值傳遞給形參。用法和用普通變量作實(shí)參是一樣的,屬于“單向值傳遞”方式。應(yīng)當(dāng)注意實(shí)參與形參的類型應(yīng)保持一致。 (2)用結(jié)構(gòu)體變量作實(shí)參。 對應(yīng)形參也是同類型結(jié)構(gòu)體變量,也屬于“單向值傳遞”方式。 (3)用指向結(jié)構(gòu)體變量(或數(shù)組)的指針作實(shí)參,將結(jié)構(gòu)體變量(或數(shù)組元素)的地址傳給形參。屬于“地址傳遞”方式,應(yīng)注意在被調(diào)用函數(shù)中是否對該地址的值有影響。5.知識點(diǎn):鏈表l 當(dāng)一個(gè)結(jié)構(gòu)體中有一個(gè)或多個(gè)成員的基類型就是本結(jié)構(gòu)體類型時(shí),通常把這種結(jié)構(gòu)體稱為可以“引用自身的結(jié)構(gòu)體”,也稱為“鏈表結(jié)構(gòu)”例如:struct link char ch

36、; Struct link *p; a; 在此,p是一個(gè)可以指向struct link類型變量的指針成員,因此,a.p=&a是合法的表達(dá)式,由此構(gòu)成的存儲結(jié)構(gòu)如圖所示。l 對鏈表進(jìn)行的操作通常有以下四種:1.建立帶有頭結(jié)點(diǎn)的單向鏈表2.順序訪問單向鏈表各結(jié)點(diǎn)數(shù)據(jù)域的值(即遍歷鏈表)struct stdint data; /*數(shù)據(jù)域*/ struct std * next; /*指針域*/;建立頭結(jié)點(diǎn)和數(shù)個(gè)節(jié)點(diǎn),即建立以下鏈表datadatadatadatahead遍歷鏈表:p=head;while(p!=0) printf("%4d",p->data); p=

37、p->next;datadatadatadataheadp q r3.刪除單向鏈表中的某個(gè)結(jié)點(diǎn)刪除q指向的節(jié)點(diǎn):p->next=q->next;或者p->next=r;free(p);datadatadataheadp q datar4.向單向鏈表中插入結(jié)點(diǎn)將r指向的節(jié)點(diǎn)插入p、q所指的兩個(gè)結(jié)點(diǎn)之間:r->next=q; 或者r->next=p->next;p->next=r;5.知識點(diǎn):共用體類型定義l 共用體是一種構(gòu)造數(shù)據(jù)類型(遵循先定義類型,再定義該類型變量的原則)l 用途:使幾個(gè)不同類型的變量共占一段內(nèi)存(相互覆蓋)l 與結(jié)構(gòu)體結(jié)構(gòu)體與共

38、用體1.區(qū)別: 存儲方式不同,結(jié)構(gòu)體變量占用的內(nèi)存單元,是其所有成員占內(nèi)存單元的總和,而共用體變量是其所有成員中占用空間最大的成員的內(nèi)存單元2.聯(lián)系: 類型定義、變量定義、成員引用等操作方式相同,兩種類型可相互嵌套第六課 編譯預(yù)處理、文件本課重要知識點(diǎn):1.知識點(diǎn):main()函數(shù)的參數(shù)l 定義形式:main(int argc,char *argv) l int argc是命令行中的字符串?dāng)?shù),char *argv是指向字符串的指針數(shù)組,系統(tǒng)使用空格把各個(gè)字符串隔開。2.知識點(diǎn):不帶參數(shù)的宏定義l 一般形式:#define 宏名 字符串(或數(shù)值)即用字符串或數(shù)值取代宏名。l 宏名一般采用大寫字母

39、表示,以與變量名區(qū)別,也可用小寫字母。l 宏定義不是C語句,不必在行末加分號。l 對程序中用“”括起來的字符串內(nèi)的字符,即使與宏名相同,也不進(jìn)行置換。l 宏定義可以嵌套使用,例如:#define R 3.0#define PI 3.14159#define L L*PI*R3.知識點(diǎn):帶參數(shù)的宏定義l 一般形式:#define 宏名(參數(shù)表) 字符串l 帶參數(shù)的宏不占運(yùn)行時(shí)間,只占編譯時(shí)間;只是簡單、機(jī)械字符替換;宏名無類型。l 要注意有括號和沒括號的區(qū)別4.知識點(diǎn):文件包含l 一般形式:#include <文件名>或者#include “文件名”l < >與” ”的區(qū)別:< >即系統(tǒng)到存放C庫函數(shù)頭文件的目錄中尋找要包含的文件;” ”即系統(tǒng)先在用戶當(dāng)前目錄中尋找,若找不到,再到存放C庫函數(shù)頭文件的目錄中尋找。l 文件包含可以嵌套。l 凡是以“#”開頭的行都是預(yù)處理命令行。5.知識點(diǎn):calloc()

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論