- 相關(guān)推薦
C語(yǔ)言重要考點(diǎn)分析
有人說(shuō):好好學(xué)習(xí),天天向上,的確,我們是應(yīng)該這么做,作為一個(gè)中小學(xué)生的感受來(lái)理解學(xué)習(xí),我們大概都認(rèn)為學(xué)習(xí)不好玩,讀書(shū)的都是書(shū)呆子,但是等到知道學(xué)習(xí)能干什么時(shí),大家也就都會(huì)恍然大悟了,因?yàn)閷W(xué)習(xí)能使我們學(xué)習(xí)到更多的知識(shí),用知識(shí)來(lái)充實(shí)自己。以下是小編為大家搜索整理了C語(yǔ)言重要考點(diǎn)分析,希望能給大家?guī)?lái)幫助!更多精彩內(nèi)容請(qǐng)及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
第1章 程序設(shè)計(jì)基本概念考點(diǎn)歸納
1.1 C語(yǔ)言的特點(diǎn)
C語(yǔ)言是近年來(lái)非常流行的語(yǔ)言,很多人寧愿放棄已經(jīng)熟悉的其他語(yǔ)言而改用C語(yǔ)言,其原因是C語(yǔ)言有優(yōu)于其他語(yǔ)言的一系列特點(diǎn)。下面是C語(yǔ)言的主要特點(diǎn):
(1)語(yǔ)言簡(jiǎn)潔、緊湊,并且使用方便、靈活;
(2)運(yùn)算符豐富;
(3)數(shù)據(jù)結(jié)構(gòu)豐富;
(4)具有結(jié)構(gòu)化的控制語(yǔ)句;
(5)語(yǔ)法限制不太嚴(yán)格,使程序設(shè)計(jì)比較自由;
(6)C語(yǔ)言允許用戶(hù)直接訪問(wèn)物理地址,能進(jìn)行位(bit)操作,可以直接對(duì)硬件進(jìn)行操作。
1.2 源程序的書(shū)寫(xiě)規(guī)則
C語(yǔ)言的書(shū)寫(xiě)規(guī)則。C語(yǔ)言書(shū)寫(xiě)格式自由,一行內(nèi)可以寫(xiě)幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句也可以分寫(xiě)在多行上。C程序沒(méi)有行號(hào),每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。C語(yǔ)言中分號(hào)是語(yǔ)句中不可少的,即使是程序中的最后一個(gè)語(yǔ)句也應(yīng)該包含分號(hào)。C語(yǔ)言中的注釋可以用″/*″用″*/″結(jié)束,注釋可以在任何允許插入空格符地方插入。C語(yǔ)言中注釋不允許嵌套,注釋可以用西文,也可以用中文。
1.3 C語(yǔ)言的風(fēng)格
由于C語(yǔ)言對(duì)語(yǔ)法限制不太嚴(yán)格,為了保證程序的準(zhǔn)確性和可讀性,建議在書(shū)寫(xiě)程序采用階梯縮進(jìn)格式。也就是按如下格式書(shū)寫(xiě)C語(yǔ)言程序:
**********;
*****()
{
**********;
********;
{
******;
……
}
*********;
}
概括起來(lái),C語(yǔ)言程序具有如下的風(fēng)格:
、貱語(yǔ)言程序的函數(shù)具體模塊結(jié)構(gòu)風(fēng)格,使得程序整體結(jié)構(gòu)清晰、層次清楚,為模塊化程序設(shè)計(jì)提供了強(qiáng)有力的支持。
、贑語(yǔ)言的源程序的擴(kuò)展名都是.C。
③C語(yǔ)言中的注釋格式為:
/*注釋內(nèi)容*/
/與*之間不允許有空格,注釋部分允許出現(xiàn)在程序中的任何位置。
、蹸語(yǔ)言中的所有語(yǔ)句都必須以分號(hào)“;”結(jié)束。
第2章 C程序設(shè)計(jì)的初步知識(shí)考點(diǎn)歸納
2.1 程序的構(gòu)成
盡管C程序的內(nèi)容千變?nèi)f化,但是它們的構(gòu)成都是一致的,一個(gè)完整的C源程序的格式可以如下表示:
編譯預(yù)處理
主函數(shù)()
函數(shù)()
.
.
.
函數(shù)()
從上面中可以看出,一個(gè)C源程序?qū)嶋H上就是若干函數(shù)的集合,這些函數(shù)中有一個(gè)是程序的主函數(shù),任何C的源程序執(zhí)行時(shí),都是從主函數(shù)開(kāi)始執(zhí)行的,其它的函數(shù)最終必將被這個(gè)主函數(shù)所調(diào)用。C語(yǔ)言除了主函數(shù)規(guī)定必須取名
main外,其它的函數(shù)名可以任取,但是要符合C的標(biāo)識(shí)符取名規(guī)則,另外注意不要與保留字重名,最好也不可與C語(yǔ)言中的庫(kù)函數(shù)或其它一些命令如編譯預(yù)處另命令重名。各個(gè)函數(shù)在程序中所處的位置并不是固定的,但要求一個(gè)函數(shù)是完整的、獨(dú)立的。不允許出現(xiàn)在一個(gè)函數(shù)內(nèi)部又去定義另一個(gè)函數(shù),或是函數(shù)格式不齊全的現(xiàn)象。一個(gè)完整的一般意義上的函數(shù)有一個(gè)固定的框架,編寫(xiě)具體的函數(shù)時(shí),只需在這個(gè)框架中填入相應(yīng)的內(nèi)容即可?蚣苋缦拢
函數(shù)類(lèi)型 函數(shù)名(形參)
形參說(shuō)明
{
內(nèi)部變量說(shuō)明;
執(zhí)行語(yǔ)句部分;
}
2.2 C語(yǔ)言的基本詞法
C語(yǔ)言的基本詞法由三部分組成:符號(hào)集、關(guān)鍵字、保留字。
符號(hào)集就是一門(mén)語(yǔ)言中允許出現(xiàn)的字符的集合,C語(yǔ)言的符號(hào)集就是ASCⅡ碼表中的一些字符,在鍵盤(pán)上不能直接得到(比如說(shuō)響鈴字符),C語(yǔ)言引入了轉(zhuǎn)義字符的概念,利用反斜杠符號(hào)″\″后加上字母的一個(gè)字符組合來(lái)表示這些字符,當(dāng)在源程序中遇到這類(lèi)字符組合時(shí),雖然這個(gè)字符組合是一個(gè)字符串的形式,但C語(yǔ)言仍會(huì)自動(dòng)將之理解成某一特定的字符。比如″\″,C語(yǔ)言在處理這個(gè)字符組合時(shí),會(huì)自動(dòng)理解成回車(chē)換行符號(hào)。轉(zhuǎn)義字符經(jīng)過(guò)進(jìn)一步引申應(yīng)用,形成了另外兩種形式:″\ddd″和″\xnn″,這里″\″后的ddd和xnn分別代表三位八進(jìn)制和兩位十六進(jìn)制數(shù)(打頭的″x″只是標(biāo)明后面跟著的是十六進(jìn)制數(shù)),這兩種形式不再局限于表示不可打印的字符,它們可以表示ASCⅡ碼表中的任意字符,只要把所需表示的字符的ASCII碼轉(zhuǎn)換成八進(jìn)制數(shù)或十六進(jìn)制數(shù)即可。比如說(shuō)字母″A″,ASCII碼為65,65的八進(jìn)制和十六進(jìn)制分別為101和x41,所以,字母A可表示為″\101″或″\x41″,對(duì)轉(zhuǎn)義字符應(yīng)認(rèn)真理解。
標(biāo)識(shí)符就是用以標(biāo)識(shí)的符號(hào)。正如現(xiàn)實(shí)生活中給每一個(gè)人都取一個(gè)名字一樣,C語(yǔ)言中的每一個(gè)對(duì)象(如函數(shù)、變量等)都必須取一個(gè)標(biāo)識(shí)符以和其它對(duì)象區(qū)別開(kāi)。在C語(yǔ)言中,這個(gè)標(biāo)識(shí)符是一個(gè)字符串,這個(gè)字符串的選定有一定的規(guī)則:必須是以字母或下劃線開(kāi)頭的字母與數(shù)字的序列。除了這個(gè)基本的規(guī)則外,C語(yǔ)言對(duì)標(biāo)識(shí)符的命名還有幾個(gè)限制需加以注意:①長(zhǎng)度最好不要超過(guò)八個(gè)字符。因C中對(duì)標(biāo)識(shí)符只處理前8個(gè)字符,超過(guò)8個(gè)長(zhǎng)度的部分將被C自動(dòng)忽略掉。″ABCDEFGH1″和″ABCDEFH2″是同一個(gè)標(biāo)識(shí)符;②標(biāo)識(shí)符不要與保留字同名,最好也不要與C提供的標(biāo)準(zhǔn)標(biāo)識(shí)符,如庫(kù)函數(shù)重名;③應(yīng)注意C語(yǔ)言對(duì)大小寫(xiě)字母是敏感的,Abcd和abcd是兩個(gè)不同的標(biāo)識(shí)符。
關(guān)鍵字實(shí)際上就是一些特殊的標(biāo)識(shí)符,又稱(chēng)保留字,這些保留字不允許用戶(hù)對(duì)它重新定義。
2.3 頭文件、數(shù)據(jù)說(shuō)明、函數(shù)的開(kāi)始和結(jié)束標(biāo)志
1.頭文件:也稱(chēng)為包含文件或標(biāo)題文件,一般放在一個(gè)C語(yǔ)言程序的開(kāi)頭,用#include″文件名″的格式,其中文件名是頭文件名,一般用.h作為擴(kuò)展名。
2.數(shù)據(jù)說(shuō)明:C語(yǔ)言中的數(shù)據(jù)分常量和變量?jī)煞N。
3.常量:有數(shù)值常量和符號(hào)常量?jī)煞N。
4.數(shù)值常量:可以分為整型常量、實(shí)型常量、浮點(diǎn)型常量和字符常量。
5.符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表的一個(gè)常量,又稱(chēng)標(biāo)識(shí)符形式的常量。
6.變量:其值可以改變的量,變量名習(xí)慣上用小寫(xiě)字母表示。
7.標(biāo)識(shí)符:用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類(lèi)型名、文件名的有效字符序列。
8.標(biāo)識(shí)符的命名規(guī)則:C語(yǔ)言中標(biāo)識(shí)符只能由字母、數(shù)字下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。C語(yǔ)言是大小寫(xiě)敏感語(yǔ)言,即對(duì)大小寫(xiě)字母認(rèn)為是不同的字符。C語(yǔ)言中標(biāo)識(shí)符的長(zhǎng)度隨系統(tǒng)不同而字,如TURBO C中取前8個(gè)字符,8個(gè)字符后面的字符會(huì)自動(dòng)取消。
2.4 數(shù)據(jù)類(lèi)型
C語(yǔ)言的數(shù)據(jù)類(lèi)型可以分為三類(lèi):
基本類(lèi)型 構(gòu)造類(lèi)型〖〗派生類(lèi)型
整型int
字符型char
實(shí)型(浮點(diǎn)型)float
雙精度型double
空類(lèi)型void 結(jié)構(gòu)體struct
公用(聯(lián)合)體union
枚舉型enum
用戶(hù)定義類(lèi)型(使用關(guān)鍵字typedef) 數(shù)組類(lèi)型
指針類(lèi)型
1.整型常量:C語(yǔ)言中的整型常量有三種形式:十進(jìn)制整型常量、八進(jìn)制整型常量和十六進(jìn)制整型常量。十進(jìn)制整型常量可以用一串連續(xù)的十進(jìn)制數(shù)字來(lái)表示;八進(jìn)制整型常量用數(shù)字0開(kāi)頭(注意:不是字母O),后面可以跟一串合法的八進(jìn)制數(shù)字;十六進(jìn)制整型常量用0x或0X開(kāi)頭,后面可以跟一串合法的十六進(jìn)制數(shù)字。
整型常量又有短整型(short int)、基本整型(int)、長(zhǎng)整型(long int)和無(wú)符號(hào)型(unsinged)之分。
2.整型變量:整型變量也可以分為基本型、短整型、長(zhǎng)整型和無(wú)符號(hào)型四種。分別用int,short int(或short),long int(或long),unsigned int(unsigned
short,unsigned long)對(duì)它們進(jìn)行定義。
3.實(shí)型常量:C語(yǔ)言中的實(shí)型常量有兩種表示形式:十進(jìn)制數(shù)形式和指數(shù)形式。在用指數(shù)形式表示實(shí)型數(shù)據(jù)時(shí),字母E可以用小寫(xiě)e代替,指數(shù)部分必須是整數(shù)(若為正整數(shù)時(shí),可以省略″+″號(hào))。
4.實(shí)型變量:C語(yǔ)言中的實(shí)型變量分為兩種:?jiǎn)尉阮?lèi)型和雙精度類(lèi)型,分別用保留關(guān)鍵字float和double進(jìn)行定義。在一般系統(tǒng)中,一個(gè)float型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié);一個(gè)double型數(shù)據(jù)占8個(gè)字節(jié)(一個(gè)long double型數(shù)據(jù)占16個(gè)字節(jié))。
5.字符常量:C語(yǔ)言的字符常量代表ASCⅡ碼字符集里的一個(gè)字符,在程序中要單引號(hào)括起來(lái)。C語(yǔ)言規(guī)定字符常量可以作為整數(shù)常量來(lái)處理(注:這里的整數(shù)常量指的是相應(yīng)字符的ASCⅡ代碼,因此字符常量可以參與算術(shù)運(yùn)算)。 在C語(yǔ)言中還有一類(lèi)特殊形式的字符常量,稱(chēng)為″轉(zhuǎn)義字符″。這類(lèi)字符常量是以一個(gè)反斜杠開(kāi)頭的字符序列,但它們只代表某個(gè)特定的ASCⅡ碼字符,在程序中使用這種常量時(shí)要括在一對(duì)單引號(hào)中。
6.字符變量:C語(yǔ)言中的字符變量用關(guān)鍵字char來(lái)定義,每個(gè)字符變量中只能存放一個(gè)字符。在一般系統(tǒng)中,一個(gè)字符變量在計(jì)算機(jī)內(nèi)存中占一個(gè)字節(jié)。與字符常量一樣,字符變量也可以出現(xiàn)在任何允許整型變量參與的運(yùn)算中。
7.字符串常量:C語(yǔ)言中的字符串常量是由一對(duì)雙引號(hào)括起來(lái)的字符序列。注意不要將字符常量和字符串常量混淆。C語(yǔ)言對(duì)字符串常量的長(zhǎng)度不加限制,C編譯程序總是自動(dòng)地在字符串的結(jié)尾加一個(gè)轉(zhuǎn)義字符?\0?,作為字符串常量的結(jié)束標(biāo)志。C語(yǔ)言中沒(méi)有專(zhuān)門(mén)的字符串變量,如果要把字符串存放在變量中,則要用一個(gè)字符型數(shù)組來(lái)實(shí)現(xiàn)。
第3章 順序結(jié)構(gòu)考點(diǎn)歸納
3.1 表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句和空語(yǔ)句
1.C語(yǔ)言的語(yǔ)句共分五大類(lèi):表達(dá)式語(yǔ)句、控制語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、空語(yǔ)句和復(fù)合語(yǔ)句。
2.表達(dá)式語(yǔ)句的一般形式為
表達(dá)式;
最典型的表達(dá)式語(yǔ)句是由一個(gè)賦值表達(dá)式加一個(gè)分號(hào)構(gòu)成的賦值語(yǔ)句。
3.控制語(yǔ)句是C語(yǔ)言程序設(shè)計(jì)中用來(lái)構(gòu)成分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的語(yǔ)句。此類(lèi)語(yǔ)句有if語(yǔ)句,for語(yǔ)句,while語(yǔ)句,do-while語(yǔ)句,switch語(yǔ)句等。
4.函數(shù)調(diào)用語(yǔ)句的一般形式為
函數(shù)名(實(shí)參表);
5.空語(yǔ)句的一般形式為
;
這條語(yǔ)句的含義是什么也不做。凡是在C語(yǔ)句程序中出現(xiàn)語(yǔ)句的地方都可以用一個(gè)分號(hào)來(lái)代替一條語(yǔ)句。
6.復(fù)合語(yǔ)句的一般形式為
{語(yǔ)句1;語(yǔ)句2;…;}
復(fù)合語(yǔ)句在功能上相當(dāng)于一條語(yǔ)句。
3.2 數(shù)據(jù)的輸入與輸出,輸入輸出函數(shù)的調(diào)用
1.C語(yǔ)言本身沒(méi)有提供輸入、輸出操作語(yǔ)句。C程序的輸入和輸出完全依靠調(diào)用C語(yǔ)言的標(biāo)準(zhǔn)輸入、輸出函數(shù)來(lái)完成。四個(gè)常用的輸入、輸出函數(shù)是: printf函數(shù)、scanf函數(shù)、putchar函數(shù)、getchar函數(shù)
2.printf函數(shù)是C語(yǔ)言提供的標(biāo)準(zhǔn)輸出函數(shù),它的作用是在終端設(shè)備(或系統(tǒng)隱含指定的輸出設(shè)備)上按指定格式進(jìn)行輸出。Printf函數(shù)的一般調(diào)用形式如下: printf(格式控制,輸出項(xiàng)表)
如果在printf函數(shù)調(diào)用之后加上″;″,就構(gòu)成了輸出語(yǔ)句。
格式控制參數(shù)以字符串的形式描述,由兩部分組成:
、倨胀ㄗ址簩⒈缓(jiǎn)單地顯示;
②格式字符:將引起一個(gè)輸出參數(shù)項(xiàng)的轉(zhuǎn)換和顯示,由“%”引出并以一個(gè)類(lèi)型描述符結(jié)束的字符串,中間可加一些可選的附加說(shuō)明項(xiàng),如下表所示。 附加說(shuō)明項(xiàng)
附加說(shuō)明項(xiàng)
說(shuō) 明
-或+ 用于指定是否對(duì)齊輸出,具有“-”符號(hào)表示左對(duì)齊,無(wú)“-”或有“+”表示右對(duì)齊
0 用于指定是否填寫(xiě)0,有此項(xiàng)表示空位用0補(bǔ)充,無(wú)此項(xiàng)表示以空格補(bǔ)充 m.n 用于指定輸出域?qū)捈熬龋琺是指域?qū),n為精度,當(dāng)指定n時(shí),隱含的精度為6位
L或h 用于輸出長(zhǎng)度修正。其中,l對(duì)于整型是指long,對(duì)實(shí)型是double;h只用于整型的格式字符,并修正為short型
格式字符用于指定輸出項(xiàng)的數(shù)據(jù)類(lèi)型及輸入格式,如下表所示。
注意:編譯程序只是在檢查了printf函數(shù)中的格式參數(shù)后,才能確定有幾個(gè)輸出項(xiàng),是什么類(lèi)型、以什么格式輸出。在編程序時(shí),應(yīng)使輸出格式與輸出項(xiàng)對(duì)應(yīng)。
格式字符
格式字符
說(shuō) 明
CcD 輸出一個(gè)字符
d或I 輸出帶符號(hào)的十進(jìn)制整型數(shù)
OoO 以八進(jìn)制無(wú)符號(hào)形式輸出整型數(shù)(不帶前導(dǎo)0)
x或X 以十六進(jìn)制無(wú)符號(hào)形式輸出整型數(shù)(不帶前導(dǎo)0x或0X),對(duì)于x,用abcdef輸出十六進(jìn)制數(shù)碼;對(duì)于X,用ABCDEF輸出十六進(jìn)制數(shù)碼
UuU 按無(wú)符號(hào)的八進(jìn)制形式輸出整型數(shù)
FfF 以小數(shù)的形式輸出單精度或雙精度數(shù),小數(shù)位由精度指定,隱含的精度為6;如指定精度為0,則小數(shù)部分(包含小數(shù)點(diǎn))都不輸出
e或E 以指數(shù)形式輸出單精度及雙精度數(shù),小數(shù)位數(shù)由精度指定,隱含的精度為6;如指定精度為0,則小數(shù)部分(包含小數(shù)點(diǎn))都不輸出
g或G 由系統(tǒng)決定是采用%f不是采用%e格式,以便使輸出寬度最小 SsS 輸出字符串中的字符,直到遇到″\0″時(shí)為止,或輸出指定的字符數(shù) PpP 輸出變量的內(nèi)存地址
% 打印一個(gè)%
3.scanf函數(shù)是C語(yǔ)言提供的標(biāo)準(zhǔn)輸入函數(shù),它的作用是在終端設(shè)備(或系統(tǒng)隱含指定的輸入設(shè)備)上輸入數(shù)據(jù)。Scanf函數(shù)的一般調(diào)用形式是:
scanf(格式控制,輸入項(xiàng)表)
如果在scanf函數(shù)調(diào)用之后加上″;″,就構(gòu)成了輸入語(yǔ)句。
格式控制是用雙引號(hào)括起來(lái)的字符串,稱(chēng)為格式控制串。格式控制串的作用是指定輸入時(shí)的數(shù)據(jù)轉(zhuǎn)換格式,即格式轉(zhuǎn)換說(shuō)明。格式轉(zhuǎn)換說(shuō)明是由″%″符號(hào)開(kāi)始,其后是格式描述符。
輸入項(xiàng)表中的各輸入項(xiàng)用逗號(hào)隔開(kāi),各輸入項(xiàng)只能是合法的地址表達(dá)式,即在變量之前加一個(gè)地址符號(hào)″&″。
在scanf函數(shù)中每個(gè)格式說(shuō)明都必須用%開(kāi)頭,以一個(gè)″格式字符″結(jié)束。 Scanf函數(shù)中的格式控制字符與printf函數(shù)中的相似,由格式說(shuō)明項(xiàng)與輸入格式符組成。格式說(shuō)明項(xiàng)如下表所示。
格式說(shuō)明項(xiàng)
格式說(shuō)明項(xiàng) 說(shuō) 明
% 起始符
* 賦值抑制符,用于按格式說(shuō)明讀入數(shù)據(jù),但不送給任何變量
MmM 域?qū)捳f(shuō)明
l或h 長(zhǎng)度修正說(shuō)明符
scanf中的格式字符如下表所示。
格式說(shuō)明項(xiàng) 說(shuō) 明
CcC 輸入一個(gè)字符
DdD 輸入十進(jìn)制整型數(shù)
IiI 輸入整型數(shù),整數(shù)可以是帶前導(dǎo)0的八進(jìn)制數(shù),帶前導(dǎo)0x(或0X)的十六進(jìn)制數(shù)
OoO 以八進(jìn)制形式輸入整型數(shù)(可為帶前導(dǎo)0,也可不帶前導(dǎo)0)
XxX 以十六進(jìn)制形式輸入整型數(shù)(可帶前導(dǎo)0x或0X,也可不帶)
UuU 無(wú)符號(hào)十進(jìn)制整數(shù)
FfF 以帶小數(shù)點(diǎn)形式或指數(shù)形式輸入實(shí)型數(shù)
EeE 與f的作用相同
SsS 輸入字符串
4.putchar函數(shù)的作用是把一個(gè)字符輸出到標(biāo)準(zhǔn)輸出設(shè)備(常指顯示器或打印機(jī))上。一般調(diào)用形式為
putchar(ch) ;
其中ch代表一個(gè)字符變量或一個(gè)整型變量,ch也可以代表一個(gè)字符常量(包括轉(zhuǎn)義字符常量)。
5.getchar函數(shù)的作用是標(biāo)準(zhǔn)輸入設(shè)備(通常指鍵盤(pán))上讀入一個(gè)字符。一般調(diào)用形式為
getchar();
getchar函數(shù)本身沒(méi)有參數(shù),其函數(shù)值就是從輸入設(shè)備得到的字符。
3.3 復(fù)合語(yǔ)句
在C語(yǔ)言中,一對(duì)花括號(hào)″{}″不僅可以用做函數(shù)體的開(kāi)頭和結(jié)尾標(biāo)志,也可以用做復(fù)合語(yǔ)句的開(kāi)頭和結(jié)尾標(biāo)志。復(fù)合語(yǔ)句的形式為:
{
語(yǔ)句1;
語(yǔ)句2;
…;
語(yǔ)句n;
。
3.4 goto語(yǔ)句及語(yǔ)句標(biāo)號(hào)的使用
goto語(yǔ)句稱(chēng)為無(wú)條件轉(zhuǎn)向語(yǔ)句,一般形式為如下:
goto語(yǔ)句標(biāo)號(hào);
goto語(yǔ)句的作用是把程序執(zhí)行轉(zhuǎn)向語(yǔ)句標(biāo)號(hào)所在的位置,這個(gè)語(yǔ)句標(biāo)號(hào)必須與此goto語(yǔ)句同在一個(gè)函數(shù)內(nèi)。
語(yǔ)句標(biāo)號(hào)在C語(yǔ)言中不必加以定義,這一點(diǎn)與變量的使用方法不同。標(biāo)號(hào)可以是任意合法的標(biāo)識(shí)符,當(dāng)在標(biāo)識(shí)符后面加一個(gè)冒號(hào),該標(biāo)識(shí)符就成了一個(gè)語(yǔ)句標(biāo)號(hào)。
第4章 選擇結(jié)構(gòu)考點(diǎn)歸納
4.1 用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)
1.在C語(yǔ)言中,if語(yǔ)句有兩種形式:
形式1:if(表達(dá)式) 語(yǔ)句
形式2:if(表達(dá)式) 語(yǔ)句1
else 語(yǔ)句2
2.if語(yǔ)句執(zhí)行時(shí),首先計(jì)算緊跟在if后面一對(duì)圓括號(hào)中的表達(dá)式的值,如果表達(dá)式的值為非零(″真″),則執(zhí)行if后的″語(yǔ)句″,然后去執(zhí)行if語(yǔ)句后的下一個(gè)語(yǔ)句。如果表達(dá)式的值為零(″假″),直接執(zhí)行if語(yǔ)句后的下一個(gè)語(yǔ)句。
3.if語(yǔ)句后面的表達(dá)式并不限于是關(guān)系表達(dá)式或邏輯表達(dá)式,而可以是任意表達(dá)式。If語(yǔ)句中可以再嵌套if語(yǔ)句。C語(yǔ)言規(guī)定,在嵌套的if語(yǔ)句中,else子句總是與前面最近的不帶else的if相結(jié)合。
4.2 用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)
1.switch語(yǔ)句是用來(lái)處理多分支選擇的一種語(yǔ)句。它的一般形式如下: switch(表達(dá)式)
{ case 常量表達(dá)式1:語(yǔ)句1
case 常量表達(dá)式2:語(yǔ)句2
。
:
case 常量表達(dá)式n:語(yǔ)句n
default :語(yǔ)句n+1
。
2.switch語(yǔ)句的執(zhí)行過(guò)程是:首先計(jì)算緊跟switch后面的一對(duì)圓括號(hào)中的表達(dá)式的值,當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此case后面的語(yǔ)句體并將流程轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行,直至switch語(yǔ)句的結(jié)束;若所有的case中的常量表達(dá)式的值都沒(méi)有與表達(dá)式值匹配,又存在
default,則執(zhí)行default后面的語(yǔ)句,直至switch語(yǔ)句結(jié)束;如果不存在default,則跳過(guò)switch語(yǔ)句體,什么也不做。
4.3 選擇結(jié)構(gòu)的嵌套
if語(yǔ)句和switch語(yǔ)句都可以嵌套使用,特別要注意,對(duì)于構(gòu)成嵌套的if語(yǔ)句,else子句總是和離它最近的、不帶else的if子句相匹配,不能弄混;在一個(gè)switch語(yǔ)句中的case后面又嵌套了一個(gè)switch語(yǔ)句,在執(zhí)行內(nèi)嵌的switch語(yǔ)句后還要執(zhí)行一條break語(yǔ)句才跳出外層的switch語(yǔ)句。
第5章 循環(huán)結(jié)構(gòu)考點(diǎn)歸納
5.1 for循環(huán)結(jié)構(gòu)
1.for循環(huán)語(yǔ)句的一般表達(dá)式是:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句
2.C語(yǔ)言語(yǔ)法規(guī)定:循環(huán)體語(yǔ)句只能包含一條語(yǔ)句,若需多條語(yǔ)句,應(yīng)使用復(fù)合語(yǔ)句。
5.2 while和do while循環(huán)結(jié)構(gòu)
1.while語(yǔ)句用來(lái)實(shí)現(xiàn)″當(dāng)型″循環(huán)結(jié)構(gòu),它的一般形式如下:
while(表達(dá)式)語(yǔ)句
當(dāng)表達(dá)式為非0值時(shí)執(zhí)行while語(yǔ)句中內(nèi)嵌的語(yǔ)句;當(dāng)表達(dá)式的值為0時(shí),直接跳過(guò)while語(yǔ)句后面的語(yǔ)句,執(zhí)行下一條語(yǔ)句。
2.while語(yǔ)句執(zhí)行的特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。
3.do while用來(lái)實(shí)現(xiàn)″直到型″循環(huán)結(jié)構(gòu),它的一般形式為:
do語(yǔ)句
while(表達(dá)式);
這個(gè)語(yǔ)句執(zhí)行時(shí),先執(zhí)行一次指定的內(nèi)嵌的語(yǔ)句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非0時(shí),返回重新執(zhí)行該語(yǔ)句,如此反復(fù),直到表達(dá)式的值為等于0為止,此時(shí)循環(huán)結(jié)束。
4.do while語(yǔ)句執(zhí)行的特點(diǎn)是:先執(zhí)行語(yǔ)句,后判斷表達(dá)式。
5.3 continue語(yǔ)句和break語(yǔ)句
1.break語(yǔ)句有兩個(gè)用途:①在switch語(yǔ)句中用來(lái)使流程跳出switch結(jié)構(gòu),繼續(xù)執(zhí)行switch語(yǔ)句后面的語(yǔ)句;②用在循環(huán)體內(nèi),迫使所在循環(huán)立即終止,即跳出所在循環(huán)體,繼續(xù)執(zhí)行循環(huán)體后面的第一條語(yǔ)句。
2.continue語(yǔ)句結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中尚未執(zhí)行的語(yǔ)句。在while和do while語(yǔ)句中,continue語(yǔ)句將使控制直接轉(zhuǎn)向條件測(cè)試部分,從而決定
是否繼續(xù)轉(zhuǎn)向循環(huán)。在for循環(huán)中,遇到continue語(yǔ)句后,首先計(jì)算for語(yǔ)句表達(dá)式3的值,然后再執(zhí)行條件測(cè)試(表達(dá)式2),最后根據(jù)測(cè)試結(jié)果來(lái)決定是否繼續(xù)轉(zhuǎn)向for循環(huán)。
5.4 循環(huán)的嵌套
1.一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱(chēng)為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多層循環(huán)。
2.三種循環(huán)(while循環(huán)、do while循環(huán)和for循環(huán))可以互相嵌套。
第6章 字符型數(shù)據(jù)考點(diǎn)歸納
6.1 字符常量
有兩種形式:一是用單引號(hào)括起來(lái)的一個(gè)單字符,如′a′,′?′,′=′;二是″轉(zhuǎn)義字符″,即以″\″開(kāi)頭的字符序列。常用的轉(zhuǎn)義字符見(jiàn)下表。
字符形式 功 能
\n 換行
\t 橫向跳格(即跳到下一個(gè)輸出區(qū))
\v 豎向跳格
\b 退格
\r 回車(chē)
\f 走紙換頁(yè)
\\ 反斜杠字符″\″
\′ 單引號(hào)(撇號(hào))字符
\″ 雙引號(hào)(″)字符
\ddd 1到3位8進(jìn)制數(shù)所代表的字符,如\123,表示8進(jìn)制數(shù)123 \xhh 1到2位16進(jìn)制數(shù)所代表的字符,如\x21,表示16進(jìn)制數(shù)23 在轉(zhuǎn)義字符賦給字符變量時(shí),也需要在其二側(cè)加單引號(hào),如:
char c=′\n′;
字符串常量是用一對(duì)雙引號(hào)括起的字符序列,如″abc\n″。
請(qǐng)區(qū)別字符變量和字符串常量。′a′是字符常量,″a″是字符串常量。在內(nèi)存中,字符常量占一個(gè)字節(jié),而對(duì)字符串常量,則在字符串的后面加一個(gè)″字符串結(jié)束標(biāo)志″,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。用′\0′(即ASCII代碼為0的字符,即″空字符″)作為字符串結(jié)束的標(biāo)志。例如,′a′內(nèi)存占兩個(gè)字節(jié),即:a \0 。
6.2 字符變量
字符變量用來(lái)存放一個(gè)字符常量,字符變量用char來(lái)定義。如:
char a,b;
a=′0′;b=′k′;
printf(″%c %c \n″,a,b);
將輸出兩個(gè)字符ok。
不能將一個(gè)字符串常量賦給一個(gè)字符變量,如:
a=″0″;b=″k″;
是錯(cuò)誤的。
給字符變量賦值可以采用如下三種方法:
(1)直接賦以字符常量,如char=′A′;
(2)賦以″轉(zhuǎn)義字符″,如:
char c=′\\′;
printf(″%c″,c);
輸出一個(gè)字符″\″。
(3)賦以一個(gè)字符的ASCII代碼,如字符′a′的ASCII代碼為97,則
char c=97;
printf(″%c″,c);
將輸出一個(gè)字符″a″。實(shí)際上,字符數(shù)據(jù)在內(nèi)存中是以整數(shù)形式(字符ASCII代碼)存放的,例如,字符′a′的ASCII碼為97,在內(nèi)存字節(jié)中的存放形式為: 01 10 00 01
在輸出時(shí),如果指定輸出字符的格式符″%c″輸出,則輸出字符′a′(在輸出時(shí)先將ASCII碼轉(zhuǎn)換為字符)。如果指定按輸出整數(shù)的格式″%d″輸出(如printf(″%d″,c)),則輸出一個(gè)整數(shù)97。
應(yīng)記住,字符數(shù)據(jù)與整型數(shù)據(jù)二者間是通用的,可以互相賦值和運(yùn)算,如: int a=′A′;
char c=97;
print(″%d\n″,c-a);
將輸出一個(gè)整數(shù)32,因?yàn)?prime;A′的ASCII碼為65。
第7章 函數(shù)考點(diǎn)歸納
7.1 庫(kù)函數(shù)的正確調(diào)用
1.C語(yǔ)言提供了豐富的庫(kù)函數(shù),包括常用數(shù)學(xué)函數(shù)、對(duì)字符和字符串處理函數(shù)、輸入輸出處理函數(shù)等。在調(diào)用庫(kù)函數(shù)時(shí)要注意以下幾點(diǎn):
(1)調(diào)用C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí)必須在源程序中用include命令,include命令的格式是:
#include″頭文件名″
include命令必須以#號(hào)開(kāi)頭,系統(tǒng)提供的頭文件名都以.h作為后綴,頭文件名用一對(duì)雙引號(hào)″″或一對(duì)尖括號(hào)〈〉括起來(lái)。
(2)標(biāo)準(zhǔn)庫(kù)函數(shù)的調(diào)用形式:
函數(shù)名(參數(shù)表)
2.在C語(yǔ)言中庫(kù)函數(shù)的調(diào)用可以以?xún)煞N形式出現(xiàn):出現(xiàn)在表達(dá)式中;作為獨(dú)立的語(yǔ)句完成某種操作。
7.2 函數(shù)的定義方法
1.C語(yǔ)言函數(shù)的一般形式為:
函數(shù)返回值的類(lèi)型名 函數(shù)名(類(lèi)型名 形參1,類(lèi)型名 形參2,…)
{
說(shuō)明部分
語(yǔ)句部分
}
定義的第一行是函數(shù)的首部,{}中的是函數(shù)體。
2.在老的C語(yǔ)言版本中,函數(shù)的首部用以下形式:
函數(shù)返回值的類(lèi)型名 函數(shù)名(形參1,形參2…)
形參類(lèi)型說(shuō)明;
新的ANSI標(biāo)準(zhǔn)C兼容這種形式的函數(shù)首部說(shuō)明。
3.函數(shù)名和形參名是由用戶(hù)命名的標(biāo)識(shí)符。在同一程序中,函數(shù)名必須唯一。形式參數(shù)名只要在同一函數(shù)中唯一即可,可以與函數(shù)中的變量同名。
4.C語(yǔ)言規(guī)定不能在一個(gè)函數(shù)內(nèi)部再定義函數(shù)。
5.若在函數(shù)的首部省略了函數(shù)返回值的類(lèi)型名,把函數(shù)的首部寫(xiě)成: 函數(shù)名(類(lèi)型名 形參1,類(lèi)型名 形參2,…)
則C默認(rèn)函數(shù)返回值的類(lèi)型為int類(lèi)型。
6.當(dāng)沒(méi)有形參時(shí),函數(shù)名后面的一對(duì)圓括號(hào)不能省略。
7.3 函數(shù)的類(lèi)型和返回值
1.函數(shù)的類(lèi)型由函數(shù)定義中的函數(shù)返回值的類(lèi)型名確定,函數(shù)的類(lèi)型可以是任何簡(jiǎn)單類(lèi)型,如整型、字符型、指針型、雙精度型等,它指出了函數(shù)返回值的具體類(lèi)型。當(dāng)函數(shù)返回的是整型值時(shí),可以省略函數(shù)類(lèi)型名。當(dāng)函數(shù)只完成特定的操作而沒(méi)有或不需要返回值時(shí),可用類(lèi)型名void(空類(lèi)型)。
2.函數(shù)返回值就是return語(yǔ)句中表達(dá)式的值。當(dāng)程序執(zhí)行到return語(yǔ)句時(shí),程序的流程就返回到調(diào)用該函數(shù)的地方(通常稱(chēng)為退出調(diào)用函數(shù)),并帶回函數(shù)值。
7.4 形式參數(shù)與實(shí)際參數(shù),參數(shù)值的傳遞
1.在函數(shù)定義中,出現(xiàn)的參數(shù)名稱(chēng)為形參(形式參數(shù)),在調(diào)用函數(shù)時(shí),使用的參數(shù)值稱(chēng)為實(shí)參(實(shí)際參數(shù))。
2.調(diào)用函數(shù)和被調(diào)用函數(shù)之間的參數(shù)值的傳遞是″按值″進(jìn)行的,即數(shù)據(jù)只能從實(shí)參單向傳遞給形參。也就是說(shuō),當(dāng)簡(jiǎn)單變量作為實(shí)參時(shí),用戶(hù)不能在函數(shù)中改變對(duì)應(yīng)實(shí)參的值。
7.5 函數(shù)的正確調(diào)用(嵌套調(diào)用,遞歸調(diào)用)
1.調(diào)用函數(shù)時(shí),函數(shù)名必須與被調(diào)用的函數(shù)名字完全一樣。實(shí)參的個(gè)數(shù)與類(lèi)型和形參的個(gè)數(shù)與類(lèi)型一致。
2.C語(yǔ)言規(guī)定:函數(shù)必須先定義,后調(diào)用,也就是被調(diào)用函數(shù)必須在調(diào)用之前加以說(shuō)明,或被調(diào)用函數(shù)整個(gè)放在調(diào)用函數(shù)之前。但對(duì)返回值類(lèi)型為int或char類(lèi)型的函數(shù)可以放在調(diào)用函數(shù)的后面。
3.C語(yǔ)言中函數(shù)定義都是互相平行、獨(dú)立的,C語(yǔ)言不允許嵌套定義函數(shù),但允許嵌套調(diào)用函數(shù),也就是說(shuō),在調(diào)用一個(gè)函數(shù)的過(guò)程中,又調(diào)用另一個(gè)函數(shù)。
4.在C程序中,調(diào)用一個(gè)函數(shù)的過(guò)程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱(chēng)為函數(shù)的遞歸調(diào)用。
5.遞歸調(diào)用函數(shù)是C語(yǔ)言的特點(diǎn)之一,有時(shí)遞歸調(diào)用會(huì)使求解的問(wèn)題變得更簡(jiǎn)單明了。
7.6 局部變量和全局變量
1.局部變量
在一函數(shù)內(nèi)部所定義的變量稱(chēng)為局部變量,局部變量只在本函數(shù)范圍內(nèi)有效。
注意:
、俨煌瘮(shù)可以使用相同的局部變量名,它們將代表不同的對(duì)象,互不干擾; ②一個(gè)函數(shù)的形參也為局部變量;
、墼诤瘮(shù)內(nèi)部,復(fù)合語(yǔ)句也可定義變量,這些變量也為局部變量,只在此復(fù)合語(yǔ)句中有效。
2.全局變量
在C語(yǔ)言中,程序的編譯單位是源程序文件,一個(gè)源程序文件中包含一個(gè)或多個(gè)函數(shù)。在函數(shù)之外所定義的變量稱(chēng)為外部變量,也稱(chēng)為全局變量。全局變
量可以被包含它的源程序文件中的其他函數(shù)所共用,作用域?yàn)閺亩x變量的位置開(kāi)始到源程序文件結(jié)束,全局變量可以增加函數(shù)之間數(shù)據(jù)的聯(lián)系。
注意:當(dāng)在同一個(gè)源程序文件中,全局變量與局部變量同名時(shí),在局部變量的作用范圍內(nèi),全局變量不起作用,局部變量起作用。
第8章 指針考點(diǎn)歸納
8.1 指針與指針變量的概念,指針與地址運(yùn)算符
1.在C語(yǔ)言中,指針是指一個(gè)變量的地址,通過(guò)變量的地址″指向″的位置找到變量的值,這種″指向″變量地址可形象地看作″指針″。用來(lái)存放指針的變量稱(chēng)為指針變量,它是一種特殊的變量,它存放的是地址值。
2.定義指針變量的一般形式為:
類(lèi)型名 *指針變量1,*指針變量2,…;
″類(lèi)型名″稱(chēng)為″基類(lèi)型″它規(guī)定了后面的指針變量中存放的數(shù)據(jù)類(lèi)型,″*″號(hào)表明后面的″指針變量1″,″指針變量2″等是指針變量,″*″號(hào)在定義時(shí)不能省略,否則就會(huì)變成一般變量的定義了。″指針變量1″,″指針變量2″等稱(chēng)為指針變量名。
3.一個(gè)指針變量只能指向同一類(lèi)型的變量。
4.與指針和指針變量有關(guān)的兩個(gè)運(yùn)算符:
(1)*:指針運(yùn)算符(或稱(chēng)″間接訪問(wèn)″運(yùn)算符)
(2)&:取地址運(yùn)算符
通過(guò)*號(hào)可以引用一個(gè)存儲(chǔ)單元,如有如下定義:
int i=123,*p,k;
則 p=&I;或k=*p;或k=*&I;都將變量i中的值賦給k。
*p=10;或*&i=10;都能把整數(shù)10賦給變量i。這里,等號(hào)左邊的表達(dá)式*p和*&i都代表變量i的存儲(chǔ)單元。
8.2 變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針以及指向它們的指針變量
1.變量的指針和指向變量的指針變量。
2.數(shù)組的指針和指向數(shù)組的指針變量。
所謂數(shù)組的指針是指數(shù)組的起始地址,數(shù)組元素的指針是數(shù)組元素的地址。 C語(yǔ)言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個(gè)元素的地址。
3.字符串的指針和指向字符串的指針變量。
我們可以通過(guò)定義說(shuō)明一個(gè)指針指向一個(gè)字符串。
C語(yǔ)言將字符串隱含處理成一維字符數(shù)組,但數(shù)組的每個(gè)元素沒(méi)有具體的名字,這一點(diǎn)跟字符數(shù)組不一樣。要引用字符串中的某個(gè)字符,只能通過(guò)指針來(lái)引用:*(s+0),*(s+1),…,*(s+n)。
4.函數(shù)的指針和指向函數(shù)的指針變量。
指向函數(shù)的指針變量的一般形式為 :
數(shù)據(jù)類(lèi)型標(biāo)識(shí)符 (*指針變量名)();
這里的″數(shù)據(jù)類(lèi)型標(biāo)識(shí)符″是指函數(shù)返回值的類(lèi)型。
函數(shù)的調(diào)用可以通過(guò)函數(shù)名調(diào)用,也可以通過(guò)函數(shù)指針調(diào)用(即用指向函數(shù)的指針變量調(diào)用)。
指向函數(shù)的指針變量表示定義了一個(gè)指向函數(shù)的指針變量,它不是固定指向哪一個(gè)函數(shù),而只是定義了這樣的一個(gè)類(lèi)型變量,它專(zhuān)門(mén)用來(lái)存放函數(shù)的入口地址。在程序中把哪一個(gè)函數(shù)的地址賦給它,它就指向哪一個(gè)函數(shù)。在一個(gè)程序中,一個(gè)指針變量可以先后指向不同的函數(shù)。
在給函數(shù)指針變量賦值時(shí),只需給出函數(shù)名而不必給出參數(shù)。因?yàn)楹瘮?shù)指針賦的值僅是函數(shù)的入口地址,而不涉及到實(shí)參與形參的結(jié)合問(wèn)題。
對(duì)指向函數(shù)的指針變量,表達(dá)式p+n,p++,p--等都無(wú)意義。
5.結(jié)構(gòu)體的指針與指向結(jié)構(gòu)體的指針變量
一個(gè)結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段的起始地址。可以設(shè)一個(gè)指針變量,用來(lái)指向一個(gè)結(jié)構(gòu)體變量,此時(shí)該指針變量的值是結(jié)構(gòu)體變量的起始地址。指針變量也可以用來(lái)指向結(jié)構(gòu)體數(shù)組中的元素。
8.3 用指針做函數(shù)參數(shù)
函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù),還可以是指針類(lèi)型,它的作用是將一個(gè)變量的地址傳送到另一個(gè)函數(shù)中。
8.4 返回指針值的指針函數(shù)
一個(gè)函數(shù)可以返回一個(gè)整型值、字符值、實(shí)型值等,也可以返回指針型數(shù)據(jù) ,即地址這種帶回指針值的函數(shù),一般的定義形式為:
類(lèi)型標(biāo)識(shí)符 *函數(shù)名(形參表);
8.5 指針數(shù)組、指向指針的指針
1.指針數(shù)組指的是一個(gè)數(shù)組,其元素均為指針類(lèi)型數(shù)據(jù),也就是說(shuō),指針數(shù)組中的每一個(gè)元素都是指針變量。指針數(shù)組的定義形式為:
類(lèi)型標(biāo)識(shí) *數(shù)組名[數(shù)組長(zhǎng)度說(shuō)明]
指針數(shù)組可以使字符串處理更加方便。
2.指向指針的指針是指指向指針數(shù)據(jù)的指針變量,一個(gè)指向指針數(shù)據(jù)的指針變量的一般形式為:
類(lèi)型標(biāo)識(shí) * *p;
8.6 main函數(shù)的命令參數(shù)
指針數(shù)組的一個(gè)重要應(yīng)用是作為main函數(shù)的形參,一般來(lái)說(shuō),main函數(shù)后的括號(hào)中是空的,即沒(méi)有參數(shù)。實(shí)際上main可以有參數(shù),如:
main(argc,argv)
其中,argc和argv就是main函數(shù)的形參。其他函數(shù)形參的值可以通過(guò)函數(shù)調(diào)用語(yǔ)句的實(shí)參中得到,由于main函數(shù)是由系統(tǒng)調(diào)用的,因而main函數(shù)的形參值不能從程序中得到,但可以在操作系統(tǒng)狀態(tài)下,將實(shí)參和命令一起給出,從而使main函數(shù)的形參得到值。命令行的一般形式為:
命令名 參數(shù)1 參數(shù)2…參數(shù)n
命令名和各參數(shù)之間用空格分隔開(kāi)。
8.7 動(dòng)態(tài)存儲(chǔ)分配
在C語(yǔ)言中有一種稱(chēng)為“動(dòng)態(tài)存儲(chǔ)分配”的內(nèi)存空間分配方式:程序在執(zhí)行期間需要存儲(chǔ)空間時(shí),通過(guò)“申請(qǐng)”分配指定的內(nèi)存空間;當(dāng)閑置不用時(shí),可隨時(shí)將其釋放,由系統(tǒng)另作它用。本節(jié)介紹C語(yǔ)言中動(dòng)態(tài)分配系統(tǒng)的主要函數(shù):malloc()、calloc()、free()及realloc(),使用這些函數(shù)時(shí),必須在程序開(kāi)頭包含文件stdlib.h。
1.主內(nèi)存分配函數(shù)—malloc()
函數(shù)格式:void*malloc(unsigned size);
函數(shù)功能:從內(nèi)存中分配一大小為size字節(jié)的塊。
參數(shù)說(shuō)明:size為無(wú)符號(hào)整型,用于指定需要分配的內(nèi)存空間的字節(jié)數(shù)。 返回值:新分配內(nèi)存的地址,如無(wú)足夠的內(nèi)存可分配,則返回NULL。 說(shuō)明:當(dāng)size為0時(shí),返回NULL。
2.主內(nèi)存分配函數(shù)——calloc()
函數(shù)格式:void*malloc(unsigned n,unsigned size);
函數(shù)功能:從內(nèi)存中分配n個(gè)同一類(lèi)型數(shù)據(jù)項(xiàng)的連續(xù)存儲(chǔ)空間,每個(gè)數(shù)據(jù)項(xiàng)的大小為size字節(jié)。
參數(shù)說(shuō)明:n為無(wú)符號(hào)整型,用于指定分配的數(shù)據(jù)項(xiàng)的個(gè)數(shù)size為無(wú)符號(hào)整型,用于指定需要分配的數(shù)據(jù)項(xiàng)所占內(nèi)存空間的字節(jié)數(shù)。
返回值:新分配內(nèi)存的地址,如無(wú)足夠的內(nèi)存可分配,則返回NULL。
3.重新分配內(nèi)存空間函數(shù)——realloc()
函數(shù)格式:void*realloc(void *block,unsigned size);
函數(shù)功能:將block所指內(nèi)存區(qū)的大小改為size字節(jié)的塊。
參數(shù)說(shuō)明:block為void類(lèi)型的指針,指向內(nèi)存中某塊,size為無(wú)符號(hào)整型,用于指定需要分配的內(nèi)存空間的字節(jié)數(shù)。
返回值:新分配內(nèi)存的地址,如無(wú)足夠的內(nèi)存可分配,則返回NULL。
4.釋放內(nèi)存函數(shù)—free()
函數(shù)格式:void free(void*block);
函數(shù)功能:將calloc()、malloc()及realloc()函數(shù)所分配的內(nèi)存空間釋放為自由空間。
參數(shù)說(shuō)明:block為void類(lèi)型的指針,指向要釋放的內(nèi)存空間。
返回值:無(wú)。
第9章 數(shù)組考點(diǎn)歸納
9.1 一維數(shù)組的定義、初始化和引用
1.一維數(shù)組的定義方式為:
類(lèi)型說(shuō)明符 數(shù)組名[常量表達(dá)式]
(1)數(shù)組名的命名方法與變量名相同,遵循標(biāo)識(shí)符命名規(guī)則;
(2)數(shù)組是用方括號(hào)括起來(lái)的常量表達(dá)式,不能用圓括號(hào);
(3)常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度,數(shù)組的下標(biāo)從0開(kāi)始,下標(biāo)的最大值為:常量表達(dá)式-1;
(4)常量表達(dá)式中可以包括常量和符號(hào)常量,不能包括變量。
可以用賦值語(yǔ)句或輸入語(yǔ)句使數(shù)組中的元素得到值,但要占用運(yùn)行時(shí)間。可以使數(shù)組在運(yùn)行之前初始化,即在編譯階段使之得到初值。
2.對(duì)數(shù)組初始化可以用以下方法實(shí)現(xiàn):
(1)在定義數(shù)組時(shí)對(duì)數(shù)組元素賦以初值。如:
static int a[10]={0,1,2,3,4,5,6,7,8,9};
經(jīng)過(guò)上面的定義和初始化后,a[0]=0,a[1]=1,…,a[9]=9。
(2)初始化時(shí)可以只對(duì)一部分元素賦初值。例如:
static int a[10]={0,1,2,3,4};
定義的數(shù)組有10個(gè)元素,但只對(duì)其中前5個(gè)元素賦了初值,后5個(gè)元素初值為0。
(3)如果想使一個(gè)數(shù)組的元素值全部為0,可以用下面的方法:
static int a[10]={0,0,0,0,0,0,0,0,0,0};
不能用:
static int a[10]={0*10};
如果對(duì)static型數(shù)組不賦初值,系統(tǒng)會(huì)對(duì)定義的所有數(shù)組元素自動(dòng)賦以0值。
(4)在對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。
3.一維數(shù)組的引用方法是:
C語(yǔ)言規(guī)定不能一次引用整個(gè)數(shù)組,引用時(shí)只能逐個(gè)元素引用,數(shù)組元素的表示形式為:
數(shù)組名[下標(biāo)]
下標(biāo)可以是整型常量或整型表達(dá)式。如:
a[0]=a[5]+a[7]-a[2*3];
9.2 二維數(shù)組的定義、初始化和引用
1.二維數(shù)組定義的一般形式為
類(lèi)型說(shuō)明符 數(shù)組名[常量表達(dá)式][常量表達(dá)式]
C語(yǔ)言采用上述定義方法,我們可以把二維數(shù)組看做是一種特殊的一維數(shù)組:它的元素又是一維數(shù)組。在C語(yǔ)言中,二維數(shù)組中元素的排列順序是:先按行存放,再按列存放,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素。
2.二維數(shù)組的初始化:二維數(shù)組可以用下面的方法初始化:
(1)分行給二維數(shù)組賦初值。如:
static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
以上賦值把第一個(gè)花括號(hào)內(nèi)的數(shù)據(jù)賦給第一行元素,第二個(gè)花括號(hào)內(nèi)數(shù)據(jù)賦給第二元素…,即按行賦值。
(2)可以將所有的數(shù)據(jù)寫(xiě)在一個(gè)花括號(hào)內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x值。
(3)可以對(duì)數(shù)組的部分元素賦初值。如:
static int a[3][4]={{1},{5},{9}};
以上賦值的結(jié)果是:數(shù)組第一列的元素分別賦了初值1,5,9,其余元素的值都是0。
(4)如果對(duì)二維數(shù)組的全部元素都賦初值,則定義數(shù)組時(shí)對(duì)第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省。
3.二維數(shù)組的引用:二維數(shù)組的元素可以表示為:
數(shù)組[下標(biāo)][下標(biāo)]
在引用二維數(shù)組時(shí),必須是單個(gè)元素,不能是整個(gè)數(shù)組名。下標(biāo)可以是一個(gè)表達(dá)式,但不能是變量。如果下標(biāo)是一個(gè)表達(dá)式,注意表達(dá)式的值不能超出數(shù)組定義的上、下限。
第10章 字符串考點(diǎn)歸納
10.1 字符串與字符數(shù)組
1.字符數(shù)組的定義
定義方法與前面介紹的類(lèi)似,只是將數(shù)組定義為字符型即可。例如: char c[10];
這里定義了一個(gè)包含10個(gè)元素的字符數(shù)組c。
2.字符數(shù)組的初始化
對(duì)字符數(shù)組初始化,可以采用以下方法:
(1)逐個(gè)字符賦給數(shù)組中各元素;
(2)用字符串常量使字符數(shù)組初始化。
3.字符串
在C語(yǔ)言中,字符串是作為字符數(shù)組來(lái)處理的,字符串可以存放在字符型一維數(shù)組中,故可以把字符型一維數(shù)組作為字符串變量。
字符串常量是用雙引號(hào)括起來(lái)的一串字符。
C語(yǔ)言中約定用′\0′作為字符串的結(jié)束標(biāo)志,它占內(nèi)存空間,但不計(jì)入串的長(zhǎng)度,′\0′的代碼值為0。
系統(tǒng)對(duì)字符串常量也自動(dòng)加一個(gè)′\0′作為結(jié)束符。例如″c language″共有10個(gè)字符,但在內(nèi)存中占11個(gè)字節(jié),最后一個(gè)字節(jié)存放′\0′。
4.字符數(shù)組的輸入輸出
(1)逐個(gè)字符輸入和輸出
①在標(biāo)準(zhǔn)輸入輸出printf和scanf中使用%c格式描述符;
、谑褂胓etchar和putchar函數(shù)。例如:
for(i=0;i<10;i++)
scanf(″%c″,&str[i]); /*或str[i]=getchar();*/
str[i]=′\0′;/*人為加上串結(jié)束標(biāo)志*/
for(i=0;i<10;i++)
printf(″%c″,str[i]);/*或putchar(str[i]);*/
(2)字符串整體輸入輸出
、僭跇(biāo)準(zhǔn)輸入輸出函數(shù)printf和scanf中使用%s格式描述符;
輸入形式:
char str[6];
scanf(″%s″,str);
其中 str為字符數(shù)組名,代表著str字符數(shù)組的起始地址,輸入時(shí)系統(tǒng)自動(dòng)在每個(gè)字符串后加入結(jié)束符′\0′。若同時(shí)輸入多個(gè)字符串,則以空格或回車(chē)符分隔。
輸入形式:
printf(″%s″,str);
輸字符串時(shí),遇第一個(gè)′\0′即結(jié)束。但可人為控制輸出串所占的域?qū)捜纾?printf(″%6s″,str);/*若字符串中字符多于6個(gè),仍將全部輸出*/
printf(″%-6s″,str);/*只輸出前6個(gè)字符,多余的不輸出*/
、谑褂胓ets和puts函數(shù)輸入輸出一行
gets函數(shù)用來(lái)從終端鍵盤(pán)讀字符,直到遇換行符為止,換行符不屬字符串的內(nèi)容。
調(diào)用形式:
gets(str);
str為字符數(shù)組名或字符指針,字符串輸入后,系統(tǒng)自動(dòng)將′\0′置于串尾代替換行符。若輸入串長(zhǎng)超出數(shù)組定義長(zhǎng)度時(shí),系統(tǒng)報(bào)錯(cuò)。
Puts函數(shù)用來(lái)把字符串的內(nèi)容顯示在屏幕上。
調(diào)用形式:
puts(str);
str的含義同上。輸出時(shí),遇到第一個(gè)′\0′結(jié)束并自動(dòng)換行,字符串中可以含轉(zhuǎn)義字符。
10.2 字符串的指針以及指向字符串的指針變量
1.用指針?lè)椒▽?shí)現(xiàn)一個(gè)字符串的存儲(chǔ)和運(yùn)算
如:
char * strp=″china″;
此處定義了一個(gè)字符指針變量strp,變量中存放的是字符串第一個(gè)字符的地址。
C語(yǔ)言對(duì)字符串常量是按字符數(shù)組處理的,它實(shí)際上在內(nèi)存開(kāi)辟了一個(gè)字符數(shù)組用來(lái)存放字符串變量,并把字符串首地址賦給字符指針變量strp。
在輸出時(shí)用
printf(″%s\n″,strp);
通過(guò)字符數(shù)組名或字符指針變量可以輸出一個(gè)字符串。而對(duì)一個(gè)數(shù)值型數(shù)組,是不能企圖用數(shù)組名輸出它的全部元素的。
2.字符指針變量與字符數(shù)組
雖然用字符數(shù)組和字符指針變量都能實(shí)現(xiàn)字符串的存儲(chǔ)和運(yùn)算,但它們二者之間是有區(qū)別的,不應(yīng)混為一談,主要有以下幾點(diǎn):
(1)字符數(shù)組由若干個(gè)元素組成,每個(gè)元素中放一個(gè)字符,而字符指針變量中存放的是地址(字符串的首地址),決不是將字符串放到字符指針變量中。
(2)對(duì)字符數(shù)組只能對(duì)各個(gè)元素賦值,不能用以下辦法對(duì)字符數(shù)組賦值。 Char str[
14];
str=″I love China!″;
而對(duì)字符指針變量,可以采用下面方法賦值:
char *a;
a=″I love China!″;
但注意賦給a的不是字符,而是字符串的首地址。
(3)賦初值時(shí),對(duì)以下的變量定義和賦初值:
char *a=″I love China!″;
等價(jià)于:
char *a;
a=″I love China!″;
而對(duì)數(shù)組初始化時(shí):
static char str[14]={″I love China!″};
不能等價(jià)于
char str[14];
str[]={″I love China!″};
即數(shù)組可以在變量定義時(shí)整體賦初值,但不能在賦值語(yǔ)句中整體賦值。
(4)在定義一個(gè)數(shù)組時(shí),在編譯時(shí)即已分配內(nèi)存單元,有確定的地址。而定義一個(gè)字符指針變量時(shí),給指針變量分配內(nèi)存單元,在其中可以放一個(gè)地址值,就是說(shuō),該指針變量可以指向一個(gè)字符型數(shù)據(jù),但如果未對(duì)它賦予一個(gè)地址值,這時(shí)該指針變量并未具體指向哪一個(gè)字符數(shù)據(jù)。
(5)指針變量的值是可以改變的。
3.字符串處理函數(shù)
C語(yǔ)言中沒(méi)有對(duì)字符串進(jìn)行合并、比較和賦值的運(yùn)算符,但幾乎所有版本的C語(yǔ)言中都提供了有關(guān)的庫(kù)函數(shù)。例如:
(1)strcat函數(shù):連接兩個(gè)字符數(shù)組中的字符串
(2)strcpy函數(shù):字符拷貝函數(shù)
(3)strcmp函數(shù):字符比較函數(shù)
(4)strlen函數(shù):測(cè)試字符串長(zhǎng)度的函數(shù)
(5)strlwr函數(shù):將字符串中大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母
(6)strupr函數(shù):將字符中小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母
第10章 結(jié)構(gòu)體與共用體
【考點(diǎn)1】結(jié)構(gòu)體類(lèi)型的說(shuō)明
結(jié)構(gòu)體是若干個(gè)類(lèi)型數(shù)據(jù)的集合,結(jié)構(gòu)體類(lèi)型說(shuō)明格式如下:struct 類(lèi)型名 {類(lèi)型1 成員名1;類(lèi)型2 成員名2;……};,以上整個(gè)部分是一個(gè)數(shù)據(jù)類(lèi)型,與整型的int是同樣地位?捎胻ypedef把結(jié)構(gòu)體類(lèi)型替換成一個(gè)只有幾個(gè)字母的簡(jiǎn)短標(biāo)識(shí)符。
【考點(diǎn)2】結(jié)構(gòu)體變量的定義
結(jié)構(gòu)體變量是用說(shuō)明的結(jié)構(gòu)體類(lèi)型所定義的一個(gè)變量,與結(jié)構(gòu)體類(lèi)型不是一回事。一個(gè)結(jié)構(gòu)體變量所占字節(jié)數(shù)為其所有成員所占字節(jié)數(shù)之和。如struct stu{char name[10];int age;} a,b;則表明定義了兩個(gè)結(jié)構(gòu)體變量a,b,每個(gè)變量占14個(gè)字節(jié)。a,b與int i,j;中的變量i,j是同樣地位。
【考點(diǎn)3】結(jié)構(gòu)體成員的引用
引用成員可用以下3種方式:(1)結(jié)構(gòu)體變量名.成員名;(2)指針變量名->成員名:(3)(*指針變量名).成員名。點(diǎn)(.)稱(chēng)為成員運(yùn)算符,箭頭(->)稱(chēng)為結(jié)構(gòu)指向運(yùn)算符。
【考點(diǎn)4】鏈表
鏈表是由一個(gè)個(gè)結(jié)點(diǎn)構(gòu)成的,一個(gè)結(jié)點(diǎn)就是一個(gè)結(jié)構(gòu)體變量。每個(gè)結(jié)點(diǎn)可以分為數(shù)據(jù)域與指針域兩個(gè)部分,數(shù)據(jù)域用來(lái)存放要存儲(chǔ)的數(shù)據(jù),指針域用來(lái)指向下一個(gè)結(jié)點(diǎn)。鏈表是考試中的難點(diǎn),在C語(yǔ)言和公共基礎(chǔ)部分都會(huì)考到,要領(lǐng)悟掌握。
【考點(diǎn)5】共用體
共用體的使用格式與結(jié)構(gòu)體相似,共用體定義的關(guān)鍵字為union,共用體所占字節(jié)數(shù)是所有成員中字節(jié)數(shù)最大的那個(gè)。
第11章 文件
【考點(diǎn)1】文件類(lèi)型指針
文件指針是一個(gè)指向結(jié)構(gòu)體類(lèi)型的指針,定義格式為:FILE *指針變量名。在使用文件時(shí),都需要先定義文件指針。
【考點(diǎn)2】文本文件與二進(jìn)制文件
文本形式存放的是字符的ASCII碼,二進(jìn)制形式存放的是數(shù)據(jù)的二進(jìn)制。例如“100”如果是文本形式就是存儲(chǔ)?1?、 ?0?、 ?0?三個(gè)字符的ASCII碼(00110001 00110000 00110000),如果是二進(jìn)制形式就把100轉(zhuǎn)化成二進(jìn)制(01100100)。
【考點(diǎn)3】打開(kāi)文件
文件的打開(kāi)形式如下:FILE *fp; fp=fopen(“c:\\lab.c”,”rb”);。fopen函數(shù)的前面一部分為文件名,后面一部分為文件的使用方式。打開(kāi)方式詳見(jiàn)教材第127頁(yè),其中r代表讀,w代表寫(xiě),a代表添加,b代表二進(jìn)制位的。
【考點(diǎn)4】文件函數(shù)
判斷文件結(jié)束feof函數(shù),移動(dòng)文件指針位置fseek函數(shù),獲得文件位置ftell函數(shù),文件位置移到開(kāi)頭rewind函數(shù),文件字符輸入輸出fgetc函數(shù)和fputc函數(shù),文件輸入輸出fscanf函數(shù)和fprintf函數(shù),文件字符串輸入輸出fgets函數(shù)和fputs函數(shù),讀寫(xiě)二進(jìn)制文件fread函數(shù)和fwrite函數(shù)。
以上函數(shù)要求知道格式會(huì)用,清楚是用于二進(jìn)制文件還是文本文件,要把教材文件這章仔細(xì)復(fù)習(xí)下,不要在考試的時(shí)候把這些文件函數(shù)搞混了。
【C語(yǔ)言重要考點(diǎn)分析】相關(guān)文章:
C語(yǔ)言考點(diǎn)精選06-29
計(jì)算機(jī)二級(jí)《C語(yǔ)言》重要考點(diǎn)復(fù)習(xí)05-07
2016計(jì)算機(jī)二級(jí)《C語(yǔ)言》章節(jié)重要考點(diǎn)10-10
C語(yǔ)言中的幾個(gè)重要概念06-17
C語(yǔ)言的宏定義分析09-10