第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ù)開始執(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è)固定的框架,編寫具體的函數(shù)時(shí),只需在這個(gè)框架中填入相應(yīng)的內(nèi)容即可??蚣苋缦拢?BR> 函數(shù)類型 函數(shù)名(形參)
形參說明
{
內(nèi)部變量說明;
執(zhí)行語(yǔ)句部分;
}
2.2 C語(yǔ)言的基本詞法
C語(yǔ)言的基本詞法由三部分組成:符號(hào)集、關(guān)鍵字、保留字。
符號(hào)集就是一門語(yǔ)言中允許出現(xiàn)的字符的集合,C語(yǔ)言的符號(hào)集就是ASCⅡ碼表中的一些字符,在鍵盤上不能直接得到(比如說響鈴字符),C語(yǔ)言引入了轉(zhuǎn)義字符的概念,利用反斜杠符號(hào)″\″后加上字母的一個(gè)字符組合來表示這些字符,當(dāng)在源程序中遇到這類字符組合時(shí),雖然這個(gè)字符組合是一個(gè)字符串的形式,但C語(yǔ)言仍會(huì)自動(dòng)將之理解成某一特定的字符。比如″\″,C語(yǔ)言在處理這個(gè)字符組合時(shí),會(huì)自動(dòng)理解成回車換行符號(hào)。轉(zhuǎn)義字符經(jīng)過進(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ù)即可。比如說字母″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ū)別開。在C語(yǔ)言中,這個(gè)標(biāo)識(shí)符是一個(gè)字符串,這個(gè)字符串的選定有一定的規(guī)則:必須是以字母或下劃線開頭的字母與數(shù)字的序列。除了這個(gè)基本的規(guī)則外,C語(yǔ)言對(duì)標(biāo)識(shí)符的命名還有幾個(gè)限制需加以注意:①長(zhǎng)度不要超過八個(gè)字符。因C中對(duì)標(biāo)識(shí)符只處理前8個(gè)字符,超過8個(gè)長(zhǎng)度的部分將被C自動(dòng)忽略掉?!錋BCDEFGH1″和″ABCDEFH2″是同一個(gè)標(biāo)識(shí)符;②標(biāo)識(shí)符不要與保留字同名,也不要與C提供的標(biāo)準(zhǔn)標(biāo)識(shí)符,如庫(kù)函數(shù)重名;③應(yīng)注意C語(yǔ)言對(duì)大小寫字母是敏感的,Abcd和abcd是兩個(gè)不同的標(biāo)識(shí)符。
關(guān)鍵字實(shí)際上就是一些特殊的標(biāo)識(shí)符,又稱保留字,這些保留字不允許用戶對(duì)它重新定義。
2.3 頭文件、數(shù)據(jù)說明、函數(shù)的開始和結(jié)束標(biāo)志
1.頭文件:也稱為包含文件或標(biāo)題文件,一般放在一個(gè)C語(yǔ)言程序的開頭,用#include″文件名″的格式,其中文件名是頭文件名,一般用.h作為擴(kuò)展名。
2.數(shù)據(jù)說明: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è)常量,又稱標(biāo)識(shí)符形式的常量。
6.變量:其值可以改變的量,變量名習(xí)慣上用小寫字母表示。
7.標(biāo)識(shí)符:用來標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。
8.標(biāo)識(shí)符的命名規(guī)則:C語(yǔ)言中標(biāo)識(shí)符只能由字母、數(shù)字下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。C語(yǔ)言是大小寫敏感語(yǔ)言,即對(duì)大小寫字母認(rèn)為是不同的字符。C語(yǔ)言中標(biāo)識(shí)符的長(zhǎng)度隨系統(tǒng)不同而字,如TURBO C中取前8個(gè)字符,8個(gè)字符后面的字符會(huì)自動(dòng)取消。
2.4 數(shù)據(jù)類型
C語(yǔ)言的數(shù)據(jù)類型可以分為三類:
基本類型 構(gòu)造類型〖〗派生類型
整型int
字符型char
實(shí)型(浮點(diǎn)型)float
雙精度型double
空類型void 結(jié)構(gòu)體struct
公用(聯(lián)合)體union
枚舉型enum
用戶定義類型(使用關(guān)鍵字typedef) 數(shù)組類型
指針類型
1.整型常量:C語(yǔ)言中的整型常量有三種形式:十進(jìn)制整型常量、八進(jìn)制整型常量和十六進(jìn)制整型常量。十進(jìn)制整型常量可以用一串連續(xù)的十進(jìn)制數(shù)字來表示;八進(jìn)制整型常量用數(shù)字0開頭(注意:不是字母O),后面可以跟一串合法的八進(jìn)制數(shù)字;十六進(jìn)制整型常量用0x或0X開頭,后面可以跟一串合法的十六進(jìn)制數(shù)字。
整型常量又有短整型(short int)、基本整型(int)、長(zhǎng)整型(long int)和無符號(hào)型(unsinged)之分。
2.整型變量:整型變量也可以分為基本型、短整型、長(zhǎng)整型和無符號(hào)型四種。分別用int,short int(或short),long int(或long),unsigned int(unsigned short,unsigned long)對(duì)它們進(jìn)行定義。
不同的計(jì)算機(jī)對(duì)上述幾種整型數(shù)據(jù)所占用的內(nèi)存字節(jié)數(shù)和數(shù)值范圍有不同的規(guī)定,以IBM-PC微機(jī)為例,以上各種數(shù)據(jù)所分配的存儲(chǔ)空間和數(shù)值范圍見下表:
類型名 所占字節(jié)數(shù) 數(shù)值范圍
int4
2
2
4-32768~+32767
-32768~+32767
-2147483648~+2147483647
0~65535
0~65535
0~4294697295
short[int]2
long[int]
unsigned[int]
unsigned short
unsigned long 2
3.實(shí)型常量:C語(yǔ)言中的實(shí)型常量有兩種表示形式:十進(jìn)制數(shù)形式和指數(shù)形式。在用指數(shù)形式表示實(shí)型數(shù)據(jù)時(shí),字母E可以用小寫e代替,指數(shù)部分必須是整數(shù)(若為正整數(shù)時(shí),可以省略″+″號(hào))。
4.實(shí)型變量:C語(yǔ)言中的實(shí)型變量分為兩種:?jiǎn)尉阮愋秃碗p精度類型,分別用保留關(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)括起來。C語(yǔ)言規(guī)定字符常量可以作為整數(shù)常量來處理(注:這里的整數(shù)常量指的是相應(yīng)字符的ASCⅡ代碼,因此字符常量可以參與算術(shù)運(yùn)算)。
在C語(yǔ)言中還有一類特殊形式的字符常量,稱為″轉(zhuǎn)義字符″。這類字符常量是以一個(gè)反斜杠開頭的字符序列,但它們只代表某個(gè)特定的ASCⅡ碼字符,在程序中使用這種常量時(shí)要括在一對(duì)單引號(hào)中。
6.字符變量:C語(yǔ)言中的字符變量用關(guān)鍵字char來定義,每個(gè)字符變量中只能存放一個(gè)字符。在一般系統(tǒng)中,一個(gè)字符變量在計(jì)算機(jī)內(nèi)存中占一個(gè)字節(jié)。與字符常量一樣,字符變量也可以出現(xiàn)在任何允許整型變量參與的運(yùn)算中。
7.字符串常量:C語(yǔ)言中的字符串常量是由一對(duì)雙引號(hào)括起來的字符序列。注意不要將字符常量和字符串常量混淆。C語(yǔ)言對(duì)字符串常量的長(zhǎng)度不加限制,C編譯程序總是自動(dòng)地在字符串的結(jié)尾加一個(gè)轉(zhuǎn)義字符‘\0’,作為字符串常量的結(jié)束標(biāo)志。C語(yǔ)言中沒有專門的字符串變量,如果要把字符串存放在變量中,則要用一個(gè)字符型數(shù)組來實(shí)現(xià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ù)開始執(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è)固定的框架,編寫具體的函數(shù)時(shí),只需在這個(gè)框架中填入相應(yīng)的內(nèi)容即可??蚣苋缦拢?BR> 函數(shù)類型 函數(shù)名(形參)
形參說明
{
內(nèi)部變量說明;
執(zhí)行語(yǔ)句部分;
}
2.2 C語(yǔ)言的基本詞法
C語(yǔ)言的基本詞法由三部分組成:符號(hào)集、關(guān)鍵字、保留字。
符號(hào)集就是一門語(yǔ)言中允許出現(xiàn)的字符的集合,C語(yǔ)言的符號(hào)集就是ASCⅡ碼表中的一些字符,在鍵盤上不能直接得到(比如說響鈴字符),C語(yǔ)言引入了轉(zhuǎn)義字符的概念,利用反斜杠符號(hào)″\″后加上字母的一個(gè)字符組合來表示這些字符,當(dāng)在源程序中遇到這類字符組合時(shí),雖然這個(gè)字符組合是一個(gè)字符串的形式,但C語(yǔ)言仍會(huì)自動(dòng)將之理解成某一特定的字符。比如″\″,C語(yǔ)言在處理這個(gè)字符組合時(shí),會(huì)自動(dòng)理解成回車換行符號(hào)。轉(zhuǎn)義字符經(jīng)過進(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ù)即可。比如說字母″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ū)別開。在C語(yǔ)言中,這個(gè)標(biāo)識(shí)符是一個(gè)字符串,這個(gè)字符串的選定有一定的規(guī)則:必須是以字母或下劃線開頭的字母與數(shù)字的序列。除了這個(gè)基本的規(guī)則外,C語(yǔ)言對(duì)標(biāo)識(shí)符的命名還有幾個(gè)限制需加以注意:①長(zhǎng)度不要超過八個(gè)字符。因C中對(duì)標(biāo)識(shí)符只處理前8個(gè)字符,超過8個(gè)長(zhǎng)度的部分將被C自動(dòng)忽略掉?!錋BCDEFGH1″和″ABCDEFH2″是同一個(gè)標(biāo)識(shí)符;②標(biāo)識(shí)符不要與保留字同名,也不要與C提供的標(biāo)準(zhǔn)標(biāo)識(shí)符,如庫(kù)函數(shù)重名;③應(yīng)注意C語(yǔ)言對(duì)大小寫字母是敏感的,Abcd和abcd是兩個(gè)不同的標(biāo)識(shí)符。
關(guān)鍵字實(shí)際上就是一些特殊的標(biāo)識(shí)符,又稱保留字,這些保留字不允許用戶對(duì)它重新定義。
2.3 頭文件、數(shù)據(jù)說明、函數(shù)的開始和結(jié)束標(biāo)志
1.頭文件:也稱為包含文件或標(biāo)題文件,一般放在一個(gè)C語(yǔ)言程序的開頭,用#include″文件名″的格式,其中文件名是頭文件名,一般用.h作為擴(kuò)展名。
2.數(shù)據(jù)說明: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è)常量,又稱標(biāo)識(shí)符形式的常量。
6.變量:其值可以改變的量,變量名習(xí)慣上用小寫字母表示。
7.標(biāo)識(shí)符:用來標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。
8.標(biāo)識(shí)符的命名規(guī)則:C語(yǔ)言中標(biāo)識(shí)符只能由字母、數(shù)字下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。C語(yǔ)言是大小寫敏感語(yǔ)言,即對(duì)大小寫字母認(rèn)為是不同的字符。C語(yǔ)言中標(biāo)識(shí)符的長(zhǎng)度隨系統(tǒng)不同而字,如TURBO C中取前8個(gè)字符,8個(gè)字符后面的字符會(huì)自動(dòng)取消。
2.4 數(shù)據(jù)類型
C語(yǔ)言的數(shù)據(jù)類型可以分為三類:
基本類型 構(gòu)造類型〖〗派生類型
整型int
字符型char
實(shí)型(浮點(diǎn)型)float
雙精度型double
空類型void 結(jié)構(gòu)體struct
公用(聯(lián)合)體union
枚舉型enum
用戶定義類型(使用關(guān)鍵字typedef) 數(shù)組類型
指針類型
1.整型常量:C語(yǔ)言中的整型常量有三種形式:十進(jìn)制整型常量、八進(jìn)制整型常量和十六進(jìn)制整型常量。十進(jìn)制整型常量可以用一串連續(xù)的十進(jìn)制數(shù)字來表示;八進(jìn)制整型常量用數(shù)字0開頭(注意:不是字母O),后面可以跟一串合法的八進(jìn)制數(shù)字;十六進(jìn)制整型常量用0x或0X開頭,后面可以跟一串合法的十六進(jìn)制數(shù)字。
整型常量又有短整型(short int)、基本整型(int)、長(zhǎng)整型(long int)和無符號(hào)型(unsinged)之分。
2.整型變量:整型變量也可以分為基本型、短整型、長(zhǎng)整型和無符號(hào)型四種。分別用int,short int(或short),long int(或long),unsigned int(unsigned short,unsigned long)對(duì)它們進(jìn)行定義。
不同的計(jì)算機(jī)對(duì)上述幾種整型數(shù)據(jù)所占用的內(nèi)存字節(jié)數(shù)和數(shù)值范圍有不同的規(guī)定,以IBM-PC微機(jī)為例,以上各種數(shù)據(jù)所分配的存儲(chǔ)空間和數(shù)值范圍見下表:
類型名 所占字節(jié)數(shù) 數(shù)值范圍
int4
2
2
4-32768~+32767
-32768~+32767
-2147483648~+2147483647
0~65535
0~65535
0~4294697295
short[int]2
long[int]
unsigned[int]
unsigned short
unsigned long 2
3.實(shí)型常量:C語(yǔ)言中的實(shí)型常量有兩種表示形式:十進(jìn)制數(shù)形式和指數(shù)形式。在用指數(shù)形式表示實(shí)型數(shù)據(jù)時(shí),字母E可以用小寫e代替,指數(shù)部分必須是整數(shù)(若為正整數(shù)時(shí),可以省略″+″號(hào))。
4.實(shí)型變量:C語(yǔ)言中的實(shí)型變量分為兩種:?jiǎn)尉阮愋秃碗p精度類型,分別用保留關(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)括起來。C語(yǔ)言規(guī)定字符常量可以作為整數(shù)常量來處理(注:這里的整數(shù)常量指的是相應(yīng)字符的ASCⅡ代碼,因此字符常量可以參與算術(shù)運(yùn)算)。
在C語(yǔ)言中還有一類特殊形式的字符常量,稱為″轉(zhuǎn)義字符″。這類字符常量是以一個(gè)反斜杠開頭的字符序列,但它們只代表某個(gè)特定的ASCⅡ碼字符,在程序中使用這種常量時(shí)要括在一對(duì)單引號(hào)中。
6.字符變量:C語(yǔ)言中的字符變量用關(guān)鍵字char來定義,每個(gè)字符變量中只能存放一個(gè)字符。在一般系統(tǒng)中,一個(gè)字符變量在計(jì)算機(jī)內(nèi)存中占一個(gè)字節(jié)。與字符常量一樣,字符變量也可以出現(xiàn)在任何允許整型變量參與的運(yùn)算中。
7.字符串常量:C語(yǔ)言中的字符串常量是由一對(duì)雙引號(hào)括起來的字符序列。注意不要將字符常量和字符串常量混淆。C語(yǔ)言對(duì)字符串常量的長(zhǎng)度不加限制,C編譯程序總是自動(dòng)地在字符串的結(jié)尾加一個(gè)轉(zhuǎn)義字符‘\0’,作為字符串常量的結(jié)束標(biāo)志。C語(yǔ)言中沒有專門的字符串變量,如果要把字符串存放在變量中,則要用一個(gè)字符型數(shù)組來實(shí)現(xiàn)。