《C程序設(shè)計(jì)》復(fù)習(xí)資料知識點(diǎn)總結(jié)(C語言)
《C程序設(shè)計(jì)》知識點(diǎn)
第1章 C語言概述
1.1.?C語言屬高級語言,區(qū)分字母的大小寫,以函數(shù)為基本單位采用模塊化程序設(shè)計(jì),可直接訪問內(nèi)存,進(jìn)而對硬件進(jìn)行操作。
1.2.?用C語言編寫和程序稱作C源程序,簡稱C程序,C程序可由若干個文本文件組成,文件擴(kuò)展名為C(使用C++編譯器時默認(rèn)擴(kuò)展名為CPP)。C源程序經(jīng)編譯、連接后得到擴(kuò)展名為EXE的可執(zhí)行文件(目標(biāo)程序)。
????????????????預(yù)處理 ???編譯、連接 ??????????執(zhí)行
若干個C程序文件----→C程序------→目標(biāo)程序文件--→
1.3.?C程序從主函數(shù)開始執(zhí)行,每個C程序有且僅有一個主函數(shù),因此,每個C程序文件中至多有一個主函數(shù)。
1.4.?C語句以分號結(jié)尾,用{}括起來的一組語句稱作復(fù)合語句,復(fù)合語句可省略花括號之后的分號。
1.5.?允許一行內(nèi)寫多個C語句,也允許一個C語句占用多行,但保留字和標(biāo)識符不可拆行。
1.6.?在C集成環(huán)境VC++ 6.0中,新建工程、保存當(dāng)前程序文件、編譯當(dāng)前程序、執(zhí)行當(dāng)前程序的快捷鍵依次為:Ctrl+N、Ctrl+S、F7、Ctrl+F5。
第2章 程序設(shè)計(jì)的靈魂——算法
2.1.?解決問題的方法和步驟稱作算法。算法和數(shù)據(jù)結(jié)構(gòu)是程序的兩個主要要素。
2.2.?算法具有確定性、有窮性、有效性等特點(diǎn)。
2.3.?算法可用自然語言、流程圖、N-S圖、計(jì)算機(jī)語言、偽代碼等描述。偽代碼是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號來描述算法。
起止框
輸入輸出框
判斷框
處理框
注釋框 ?????……
?
連接點(diǎn) ???〇
?
?
?
流程線 ???有向線段或折線
圖2.1?ANSI流程圖符號
2.4.?算法的基本結(jié)構(gòu)分為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。
?
↓
?
?
↓
?
?
↓
?
?
↓←-
--┐
?
?
?
Y┌
條件
??┐N
?
條件
?┐N
?
?
?│
?
↓
?
?↓
?
??↓
?
?↓Y
?│
?
↓
?│
?
?
?
?
?
?
?
?
?│
?
條件
┘Y
?
↓
?
└---
→↓←
---┘
?
↓←-
--┘
?
?↓N
?
???圖2.2?順序結(jié)構(gòu) ???圖2.3?選擇結(jié)構(gòu)?????????圖2.4?當(dāng)循環(huán) ????圖2.5?直到循環(huán)
?
?
?
條件
?
?
條件
?
循環(huán)體
?
??Y
?
?
N
?
循環(huán)體
?
?
?
?
?
?
條件
???圖2.6?順序結(jié)構(gòu) ???圖2.7?選擇結(jié)構(gòu)?????????圖2.8?當(dāng)循環(huán) ????圖2.9 直到循環(huán)
2.5.?由三種基本結(jié)構(gòu)組成的程序稱作結(jié)構(gòu)化程序,結(jié)構(gòu)化程序中的每個模塊只有一個入口和一個出口。結(jié)構(gòu)化程序設(shè)計(jì)通常采用“自頂向下、逐步細(xì)化”的設(shè)計(jì)方法。
第3章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式
3.1.?C的數(shù)據(jù)類型如下所示:
表3.1?C語言的數(shù)據(jù)類型
數(shù)據(jù)類型
字節(jié)數(shù)
數(shù)值范圍
基本類型
整型
無符號短整型(unsigned?short int)
4
0~216-1
有符號短整型(signed?short?int)
2
-215~215-1
無符號長整型(unsigned long?int)
4
0~232-1
有符號長整型(signed long?int)
4
-231~231-1
實(shí)型
單精度實(shí)型(float)
4
長37位,6位有效
雙精度實(shí)型(double)
8
長307位,15位有效
長雙精度實(shí)型(long double)
10
長4931位,18位有效
字符型(char)
1
0~28-1
空類型(void)
1
?
構(gòu)造類型
枚舉類型
2
?
指針類型
2
?
數(shù)組類型
?
?
結(jié)構(gòu)體類型
?
?
共用體類型
?
?
3.2.?C符號常量名、變量名、函數(shù)名等統(tǒng)稱標(biāo)識符,標(biāo)識符的命名規(guī)則為:以字母或下劃線開頭,由字母、數(shù)字、下劃線組成,超出32個字符部分被忽略(最好不超過8個字符)。
3.3.?以0開頭的整數(shù)為八進(jìn)制整數(shù),以0X或0x開頭的整數(shù)為十六進(jìn)制無符號整數(shù)。
3.4.?-32768~32767為int型,0U~65535U為unsigned型,65536U~4294967295U和0UL~4294967295UL為unsigned?long型,-2147483648~-32769、32768~2147483647和-2147483648L~2147483647L為long型。后綴U和L不區(qū)分大小寫和次序。
3.5.?數(shù)據(jù)的存儲字節(jié)數(shù)可用運(yùn)算符sizeof()查詢,括號內(nèi)可是數(shù)據(jù)、表達(dá)式或類型名。
3.6.?有符號整數(shù)(int和long)按補(bǔ)碼存儲,因此,-65535U~-1U與1U~65535U依次相等,-4294967295UL~-1UL與1UL~4294967295UL依次相等。
3.7.?定點(diǎn)數(shù)(含小數(shù)點(diǎn)數(shù))和浮點(diǎn)數(shù)統(tǒng)稱C實(shí)型常量,浮點(diǎn)數(shù)的一般形式為:
尾數(shù)e除碼 ???或 ???尾數(shù)E除碼
其含義為:
尾數(shù)×10除碼
其中,尾數(shù)為定點(diǎn)數(shù)或整數(shù),除碼為整數(shù)。標(biāo)準(zhǔn)浮點(diǎn)數(shù)的小數(shù)點(diǎn)在第1位非0數(shù)字之后。后綴L或l的實(shí)型常量為長雙精度,無后綴實(shí)型常量為雙精度。
3.8.?用一對單引號括起來的單個字符稱作C字符常量,其值為該字符的ASCII碼(1字節(jié)無符號整數(shù))。
3.9.?轉(zhuǎn)義字符'\n'、'\t'、'\\'、'\''、'\"'分別表示回車符、制表符、反斜杠、單引號、雙引號。
3.10.?轉(zhuǎn)義字符'\整數(shù)'、'\x整數(shù)'(或'\X整數(shù)')中的整數(shù)分別為八進(jìn)制、十六進(jìn)制,表示以此整數(shù)為ASCII碼的字符。
3.11.?用雙引號括起來的一串字符稱作C字符串型常量,串中字符數(shù)稱作串長,可以為0。字符串的存儲形式為:依次存儲字符串中字符的ASCII碼,并追加一個空字符'\0'(1字節(jié)無符號整數(shù)0)。
3.12.?字符型、整型、實(shí)型數(shù)據(jù)統(tǒng)稱數(shù)值型數(shù)據(jù),不同類型的數(shù)值型數(shù)據(jù)可以混合運(yùn)算,低精度數(shù)據(jù)被自動強(qiáng)制轉(zhuǎn)換為高精度數(shù)據(jù)后方參與運(yùn)算。另外,字符常量為有符號短整數(shù),兩個字符型數(shù)據(jù)間的運(yùn)算按有符號短整數(shù)處理。
3.13.?如果將數(shù)值型數(shù)據(jù)賦給不同類型的數(shù)值型變量,則數(shù)值型數(shù)據(jù)將被自動強(qiáng)制轉(zhuǎn)換為變量的數(shù)據(jù)類型。
3.14.?C允許定義變量的同時賦初值。
3.15.?C運(yùn)算符及其優(yōu)先級、結(jié)合性如附錄C(教材第365頁)所示。
3.16.?強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換的一般形式為:
(類型名)數(shù)據(jù)
3.17.?自增++、自減--運(yùn)算只能作用于變量,作用于右側(cè)時,返回變量自增、自減前的值。
3.18.?賦值表達(dá)式的格式為:
變量=表達(dá)式 ???或 ???變量op=表達(dá)式
其中,op為運(yùn)算符 +、-、*、/、%、>>、<<、&、^、|?中某一個。前者將右邊表達(dá)式的值賦給左邊的變量,后者將左邊變量的當(dāng)前值與右邊表達(dá)式的值作相應(yīng)運(yùn)算后仍賦給左邊的變量。整個賦值表達(dá)式取左邊變量所賦的新值。
3.19.?用逗號分隔的一組表達(dá)式稱作逗號表達(dá)式,其一般形式為:
表達(dá)式, 表達(dá)式, …, 表達(dá)式
其功能為:從左至右依次計(jì)算各表達(dá)式的值,并以最后一個表達(dá)式的值為整個逗號表達(dá)式的值。
3.20.?將數(shù)學(xué)式改為C表達(dá)式時應(yīng)注意:
(1)?乘號*不可省略;
(2)?正確改寫腳碼、運(yùn)算符、括號等;
(3)?正確書寫函數(shù)名;
(4)?把握好運(yùn)算優(yōu)先級,分?jǐn)?shù)線改為/時,分子、分母相應(yīng)加括號;
(5)?正確拆分不等式組;
(6)?區(qū)分整數(shù)除法和實(shí)數(shù)除法。
第4章 順序結(jié)構(gòu)程序設(shè)計(jì)
4.1.?表達(dá)式后綴分號稱作表達(dá)式語句,即,
表達(dá)式;
4.2.?putchar、getchar、printf、scanf等輸入輸出函數(shù)的原型在頭文件stdio.h中。
4.3.?函數(shù)putchar和getchar的格式和功能如下:
(1)?putchar
格式:putchar(表達(dá)式)
功能:向標(biāo)準(zhǔn)輸出設(shè)備輸出以指定表達(dá)式的值為ASCII碼的字符,并以該值為函數(shù)值(自動強(qiáng)制轉(zhuǎn)換為int型)。
(2)?getchar
格式:getchar()
功能:從標(biāo)準(zhǔn)輸入設(shè)備輸入一個字符,并以該字符為函數(shù)值。
注意:getchar可提取空格及回車、Tab等部分控制字符,而且只提取輸入中相應(yīng)位置上的一個字符,因此,輸入字符間無須分隔,否則也被視為輸入字符。
4.4.?printf函數(shù)的格式和功能如下:
格式:printf(格式控制串, 輸出表列)
功能:
(1)?從右至左依次計(jì)算輸出表列中各表達(dá)式的值;
(2)?從左至右依次輸出格式控制串中的字符,其中,%引導(dǎo)的格式控制符由輸出表列中相應(yīng)表達(dá)式的值所取代。
輸出表列是一組用逗號分隔的表達(dá)式(又稱輸出項(xiàng),可以為0項(xiàng))。格式控制串為字符串型數(shù)據(jù)(可以是表達(dá)式)。其中,格式符用于控制輸出表列中相應(yīng)表達(dá)式的輸出格式。格式符及其功能如下表所示:
表4.1?printf格式字符
格式符
說明
d或i
有符號十進(jìn)制短整數(shù)(不輸出正號)
u
無符號十進(jìn)制短整數(shù)
o
無符號八進(jìn)制短整數(shù)(無前綴0)
x或X
無符號十六進(jìn)制短整數(shù)(無前綴0x,數(shù)字的大小寫與x相同)
c
字符
s
字符串
f
定點(diǎn)數(shù)(默認(rèn)6位小數(shù))。
e或E
浮點(diǎn)數(shù)(浮點(diǎn)數(shù)中e的大小寫與格式符e的大小寫相同)
g或G
%f和%e中輸出寬度較短者(e與g的大小寫相同)
附加格式符
說明
l
插在%和d、i、u、o、x、X之間,表示輸出相應(yīng)長整數(shù)。
整數(shù)
插在%和其它格式符之間,前一個整數(shù)的絕對值為輸出數(shù)據(jù)的寬度,后一個整數(shù)控制實(shí)際輸出位數(shù):①輸出整數(shù)時,指定輸出位數(shù),不足左補(bǔ)0,超出保留;②輸出實(shí)數(shù)時,指定輸出小數(shù)位數(shù),不足右補(bǔ)0,超出四舍五入;③輸出字符串時,指定輸出字符數(shù)。另外,第一個整數(shù)為負(fù)時,輸出數(shù)據(jù)左對齊,否則右對齊。
.整數(shù)
整數(shù).整數(shù)
?
4.5.?scanf函數(shù)的格式和功能如下:
格式:scanf(格式控制串, 地址表列)
其中,格式控制串為字符串型數(shù)據(jù)(可以是表達(dá)式),地址表列是一組用逗號分隔的地址。
功能:
(1)?右至左依次計(jì)算地址表列中各表達(dá)式的值;
(2)?從標(biāo)準(zhǔn)輸入設(shè)備提取數(shù)據(jù),并從左至右依次存儲到所指定的存儲單元。
(3)?地址表列中的地址可用表達(dá)式表示,通常形式為:
&變量
其中&是地址運(yùn)算符,它表示取其后變量的存儲(起始)地址。
說明:
(1)?scanf函數(shù)格式符與printf函數(shù)的格式符的功能相似。scanf的合法格式符不區(qū)分大小寫、實(shí)型格式符均等效,另外,
表4.2?scanf的附加格式符說明
附加格式符
說明
正整數(shù)
指定輸入數(shù)據(jù)的最大寬度(插在%與其它格式符之間)
*
跳過當(dāng)前一個數(shù)據(jù)(插在%與其它格式符之間)
*正整數(shù)
跳過當(dāng)前指定個字符(插在%與其它格式符之間)
?
(2)?如果格式控制串中有非格式符,則輸入數(shù)據(jù)中對應(yīng)位置上必須是該字符,且被跳過,這為指定數(shù)據(jù)間分隔符提供了方便。
(3)?printf和scanf格式控制串中的每對%%(從左至右結(jié)合)按一個普通字符%對待。
第5章 選擇結(jié)構(gòu)程序設(shè)計(jì)
5.1.?C邏輯值為短整數(shù)(int),真、假分別為1、0。另外,字符、數(shù)、指針作為邏輯量時,非0、非空為真(即1),0、空為假(即0)。邏輯運(yùn)算如下表所示:
表5.1?邏輯運(yùn)算真值表
左元
右元
!右元
左元&&右元
左元||右元
假(0)
假(0)
真(1)
假(0)
假(0)
假(0)
真(非0)
假(0)
假(0)
真(1)
真(非0)
假(0)
真(1)
假(0)
真(1)
真(非0)
真(非0)
假(0)
真(1)
真(1)
5.2.?對于形如
□||□||…
的邏輯式,從左至右計(jì)算□的邏輯值,遇到真則提前終止。
5.3.?對于形如
□&&□&&…
的邏輯式,從左至右計(jì)算□的邏輯值,遇到假則提前終止。
5.4.?算術(shù)、關(guān)系、邏輯運(yùn)算的優(yōu)先級參見附錄C(教材第365頁)。
5.5.?if語句的格式和功能如下:
(1)?格式一:if(條件) 語句
功能:如果條件成立,方執(zhí)行語句。
(2)?格式二:if(條件)語句1 else 語句2
功能 ?如果條件成立,執(zhí)行語句1,否則執(zhí)行語句2。
注意:else不可獨(dú)立使用,它與其前最近一個尚未配對的if配對,為避免歧義,通常只在else中嵌套if語句。
5.6.?條件表達(dá)式的格式和功能如下:
格式:條件?表達(dá)式1:表達(dá)式2
功能:如果條件成立,取表達(dá)式1的值,否則取表達(dá)式2的值。
說明:條件表達(dá)式可以嵌套,與其前最近一個尚未配對的if配對。
5.7.?switch語句的格式和功能如下:
格式:
switch(表達(dá)式)
{
…
case 常量i: 語句組i
…
default: 語句組n+1
}
功能:如果表達(dá)式的值等于常量i,則從語句組i開始執(zhí)行,否則執(zhí)行語句組n+1。
說明:
(1)?“表達(dá)式”的值和“常量”為整型(包括字符型)。
(2)?switch中的每個語句組稱作一個分支,為使各分支獨(dú)立,通常以break、return、exit等語句結(jié)尾。另外,“default: 語句組n+1”可以缺省。
5.8.?break語句的格式和功能如下:
格式:break;
功能:結(jié)束本層switch語句或本層循環(huán)語句。
說明:break語句只能用于switch語句和循環(huán)。
第6章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
6.1.?while語句的格式和功能如下:
格式:while(表達(dá)式)循環(huán)體
功能:當(dāng)表達(dá)式的值為真時,重復(fù)執(zhí)行其后循環(huán)體。
說明:循環(huán)體是循環(huán)語句的內(nèi)嵌語句,可以是空或復(fù)合語句(下同)。
6.2.?do-while語句的格式和功能如下:
格式:do 循環(huán)體 while(表達(dá)式)
功能:重復(fù)執(zhí)行循環(huán)體,直到表達(dá)式的值為假。
說明:do-while循環(huán)至少執(zhí)行一次循環(huán)體。
6.3.?for語句的格式和功能如下:
格式:for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 循環(huán)體
功能:
(1)?計(jì)算表達(dá)式1;
(2)?當(dāng)表達(dá)式2的值為真時,重復(fù)執(zhí)行循環(huán)體和計(jì)算表達(dá)式3。
說明:表達(dá)式1、表達(dá)式2、表達(dá)式3均可缺省,但保留分號。
6.4.?continue語句的格式和功能如下:
格式:continue;
功能:跳過循環(huán)體中其后程序段(結(jié)束本次循環(huán))。
說明:continue語句只能用于循環(huán)。
6.5.?掌握以下算法:累加、階乘、判斷素?cái)?shù)、分解整數(shù)數(shù)字、遞推數(shù)列、打印字符圖形。
第7章 數(shù)組
7.1.?同一類型數(shù)據(jù)的序列稱作數(shù)組,數(shù)組中數(shù)據(jù)用相應(yīng)下標(biāo)變量訪問,因此,數(shù)組亦可視為由下標(biāo)變量組成的序列。
7.2.?定義數(shù)組語句的一般格式和功能為:
格式:數(shù)據(jù)類型名 數(shù)組名[第1維長度]…[第n維長度]
功能:為數(shù)組分配連續(xù)內(nèi)存單元,用于存儲數(shù)組中的下標(biāo)變量(低維優(yōu)先),并將起始地址(又稱基址)賦給數(shù)組名。
說明:數(shù)組長度只能為整型常量或整型常量表達(dá)式。
7.3.?數(shù)組的要素有:數(shù)據(jù)類型、數(shù)組名、維數(shù)及各維的長度。各維的長度必須是常量,可用常量表達(dá)式表示,其值的整數(shù)位有效——截?cái)嗳≌?/span>
7.4.?下標(biāo)變量的格式為:
數(shù)組名[第1維下標(biāo)]…[第n維下標(biāo)]
7.5.?下標(biāo)從0開始,可用表達(dá)式表示,其值的整數(shù)位有效。下標(biāo)最大值比長度小1。
7.6.?下標(biāo)變量的使用與普通變量相同。
7.7.?定義數(shù)組的同時可對數(shù)組中的下標(biāo)變量賦初值。
格式:數(shù)據(jù)類型名 數(shù)組名[第1維長度]…[第n維長度]={數(shù)據(jù)表}
功能:定義數(shù)組的同時將數(shù)據(jù)表中數(shù)據(jù)依次賦給數(shù)組中下標(biāo)變量,未賦值下標(biāo)變量的初值為相應(yīng)數(shù)據(jù)類型的0。
說明:數(shù)據(jù)表中的數(shù)據(jù)必須是常量,可用表達(dá)式表示。第1維長度可省略,如果省略,其長度由數(shù)據(jù)表和其它維長度確定——存儲所需的最小長度。
7.8.?以字符為數(shù)據(jù)元素的數(shù)組稱作字符數(shù)組,它由一組字符型下標(biāo)變量組成。除賦值外,字符數(shù)組名的使用與字符串變量相似。字符數(shù)組也可用字符串初始化。
7.9.?標(biāo)準(zhǔn)函數(shù)庫提供許多用于處理字符串的函數(shù)。
表7.1?常用字符串處理函數(shù)
格式
功能
頭文件
puts(串)
依次輸出串中字符,遇到'\0'終止,然后換行。
stdio.h
gets(串)
讀入一行字符,依次存入所分配的內(nèi)存空間,并追加'\0'。
strcat(串1,?串2)
將串2復(fù)制、連接到串1的第一個'\0'處。
string.h
strcpy(串1,?串2)
將串2復(fù)制到串1。
strcmp(串1,?串2)
比較串1和串2的大小。
strlen(串)
求字符串的長度。
strlwr(串)
將串中大寫字母均轉(zhuǎn)換為相應(yīng)小寫字母。
strupr(串)
將串中小寫字母均轉(zhuǎn)換為相應(yīng)大寫字母。
注意:輸出字符串及處理字符串的函數(shù),均忽略字符串中第一個'\0'及其后的字符。
7.10.?掌握冒泡排序。
第8章 函數(shù)
8.1.?自定義函數(shù)的格式為:
函數(shù)值類型?函數(shù)名(帶類型聲明的形參表列) {函數(shù)體}
8.2.?函數(shù)值的默認(rèn)數(shù)據(jù)類型為int。
8.3.?如果函數(shù)有返回值,則用return語句返回,其格式為:
return?表達(dá)式; ???或 ???return(表達(dá)式);
8.4.?如果函數(shù)無返回值,即函數(shù)值類型為void,亦可用格式:
return;
結(jié)束本函數(shù)并返回調(diào)用者。
8.5.?函數(shù)一般調(diào)用格式為:
函數(shù)名(實(shí)參表列)
其中,實(shí)參表列為一組逗號分隔的表達(dá)式。實(shí)參按從右至左的次序計(jì)算并傳遞給相應(yīng)形參。
8.6.?如果函數(shù)調(diào)用在其定義之前,調(diào)用前應(yīng)作相應(yīng)聲明,聲明格式為:
函數(shù)值類型名?函數(shù)名(形參及其類型聲明表列);
其中,形參可省略。
8.7.?函數(shù)不可嵌套定義,但允許嵌套調(diào)用,亦可直接或間接調(diào)用自身(稱作遞歸函數(shù))。
8.8.?遞歸函數(shù)的函數(shù)體的一般格式為:(B班同學(xué)不作要求)
if(遞歸條件)語句1 /*遞歸時,如何遞歸*/
else 語句2 /*非遞歸時,如何處理*/
或
if(!遞歸條件)語句1 /*非遞歸時,如何處理*/
else 語句2 /*遞歸時,如何遞歸*/
8.9.?形參及函數(shù)內(nèi)定義的變量稱作局部變量,它從定義處生效,且只在該函數(shù)內(nèi)有效。因此,不同函數(shù)中的局部變量可以同名,但同名不同義。
8.10.?在所有函數(shù)之外定義的變量稱作全局變量,它從定義處生效。
8.11.?如果局部變量與全局變量同名,則同名全局變量被屏蔽。
8.12.?局部變量的存儲方式分為:自動(auto,默認(rèn))、靜態(tài)(static)、寄存器(register)。
8.13.?存儲方式和數(shù)據(jù)類型是變量的兩個重要屬性,必須在定義變量時一并聲明,關(guān)鍵字的排列順序沒有限制。變量的默認(rèn)數(shù)據(jù)類型為int,默認(rèn)存儲方式為auto,但關(guān)鍵字auto和int不可同時缺省。
8.14.?auto型局部變量占用動態(tài)數(shù)據(jù)區(qū),當(dāng)函數(shù)調(diào)用結(jié)束時釋放所占內(nèi)存。register占用CPU中的寄存器,但寄存器不夠用時,占用動態(tài)數(shù)據(jù)區(qū)。
8.15.?全局變量和static型局部變量占用靜態(tài)數(shù)據(jù)區(qū),默認(rèn)初值為相應(yīng)數(shù)據(jù)類型的0。
8.16.?static型局部變量的聲明和初始化只執(zhí)行一次。
8.17.?如果全局變量被聲明為static型,則其它程序文件不能使用該全局變量。否則,其它程序文件也可使用該全局變量,但使用前應(yīng)作extern聲明。
8.18.?被聲明為static型的函數(shù),只在本程序文件中有效,不能被其它程序文件調(diào)用。否則,其它程序文件也可調(diào)用此函數(shù),但調(diào)用前應(yīng)作extern聲明。
8.19.?常用數(shù)學(xué)函數(shù)在頭文件math.h中。掌握基本初等函數(shù)。
第9章 預(yù)處理命令
9.1.?預(yù)處理命令在程序編譯前執(zhí)行,其主要功能是“文本置換”。
9.2.?不帶參數(shù)宏定義的格式和功能如下:
格式:#define 宏名?文本
功能:在預(yù)處理時,將程序中宏名用相應(yīng)的文本置換。
9.3.?帶參數(shù)宏定義的格式和功能如下:
格式:#define 宏名(形參表列) 文本
功能:在預(yù)處理時,將程序中帶參數(shù)的宏用相應(yīng)的文本置換,且文本中的形參被相應(yīng)的實(shí)參所置換。
注意:形參無須且做類型聲明。
9.4.?終止宏定義的格式如下:
格式 ?#undef 宏名
9.5.?宏定義可以引用已有的宏,亦可重新定義所代表的文本。
9.6.?預(yù)處理命令無須以分號結(jié)尾,否則分號也參與置換。
9.7.?#include命令的格式和功能如下:
格式一:#include?"文件名"
格式二:#include?<文件名>
功能:在預(yù)處理時,用指定文件置換本命令——加載文件。置換后,被包含文件成為本文件的一部分,其函數(shù)、全局變量等均可在本文件中直接使用,無須作extern聲明。前一種格式先在當(dāng)前目錄中找指定文件,如果未找到,方到存放C頭文件的目錄中查找。后一種格式直接到存放C頭文件的目錄中查找指定文件。
9.8.?條件編譯命令的格式和功能如下:
格式一:#ifdef 宏名 程序段1?#else?程序段2?#endif
功能:在預(yù)處理時,如果指定的宏名已定義,則用程序段1置換本命令,否則用程序段2置換本命令。當(dāng)程序段2為空時,#else可省略(下同)。
格式二:#ifndef 宏名 程序段1?#else?程序段2?#endif
功能:在預(yù)處理時,如果指定的宏名未定義,則用程序段1置換本命令,否則用程序段2置換本命令。
格式三:#if 常量表達(dá)式 程序段1?#else?程序段2?#endif
功能:在預(yù)處理時,如果指定常量表達(dá)式的值為真(非0),則用程序段1置換本命令,否則用程序段2置換本命令。
9.9.?注釋命令在預(yù)處理時被刪除,不影響源程序和目標(biāo)程序。注釋命令的格式如下:
/*注釋內(nèi)容*/
第10章 指針
10.1.?內(nèi)存的基本單位是字節(jié),每個字節(jié)都有相應(yīng)的編號,稱作地址或指針。借助于指針,C語言可以直接訪問內(nèi)存,從而對硬件進(jìn)行操作。
10.2.?變量所占用內(nèi)存的大小由其數(shù)據(jù)類型決定,變量所占用內(nèi)存的第1個字節(jié)的地址稱作該變量的地址或指針,表為:
&變量名
10.3.?指針?biāo)赶驍?shù)據(jù)的類型稱作該指針的基類型,它所指向數(shù)據(jù)用
*指針
訪問,可作為普通變量使用。
10.4.?指針本身也是一種數(shù)據(jù)類型,占用2字節(jié)內(nèi)存,可作為無符號整數(shù)輸出和參與關(guān)系運(yùn)算、邏輯運(yùn)算,但指針的其它運(yùn)算不同于整數(shù)運(yùn)算。
10.5.?指針運(yùn)算可簡單地分為以下五類:
(1)?單目運(yùn)算有六個:!、&、*、++、--、sizeof。
(2)?雙目運(yùn)算有四種:-、關(guān)系運(yùn)算、邏輯運(yùn)算、賦值運(yùn)算。
(3)?指針與整數(shù)間的運(yùn)算有三個:+、-、[ ]。
(4)?強(qiáng)制類型轉(zhuǎn)換運(yùn)算:( )。
(5)?結(jié)構(gòu)體成員運(yùn)算:->。
其中,+、-、++、--、+=、-=均以基類型數(shù)據(jù)為基本單位。
10.6.?一維數(shù)組的數(shù)組名可作為指針調(diào)用,它指向數(shù)組中的第一個元素,以數(shù)組中元素的類型為基類型。數(shù)組名的值不可修改,且sizeof(數(shù)組名)的值為整個數(shù)組所占內(nèi)存的字節(jié)數(shù)。
10.7.?對于一維數(shù)組來說,
基址+i ?和??&基址[i]
均指向數(shù)組中的第i+1個元素(i>=0);
*(基址+i) ?和??基址[i]
均表示數(shù)組中的第i+1個元素(i>=0)。
10.8.?n維數(shù)組可看作是以n-1維數(shù)組為元素的一維數(shù)組,數(shù)組名可看作是指向數(shù)組中的第一個n-1維數(shù)組的指針。
10.9.?下標(biāo)變量可作為實(shí)參,但不可作為形參,實(shí)際上,它被誤認(rèn)為指針。
10.10.?※ C源程序經(jīng)編譯后,系統(tǒng)為源程序中的每個函數(shù)均分配一個入口地址,稱作函數(shù)指針。在C源程序中,函數(shù)指針用函數(shù)名表示,其值不可修改。以函數(shù)指針為值的變量稱作函數(shù)指針變量,其定義格式為:
函數(shù)類型名(*函數(shù)指針變量名)(?);
可用下述格式代替函數(shù)名:
(*函數(shù)指針)
10.11.?※?函數(shù)返回值可以是指針,定義函數(shù)的一般格式為:
基類型 *函數(shù)名(形參列表){函數(shù)體}
10.12.?不允許將非0數(shù)直接賦給指針變量,須做強(qiáng)制轉(zhuǎn)換。當(dāng)指針變量的值為0時,稱之為空指針。
10.13.?※ 以指針為元素的數(shù)組稱作指針數(shù)組。
10.14.?※ 以指針為基類型的指針稱作指向指針的指針,以指向指針的指針為值的變量稱作指向指針的指針變量,其定義格式為:
存儲方式關(guān)鍵字 基類型名 **指向指針的指針變量名
10.15.?※ C源程序經(jīng)編譯、連接所得目標(biāo)程序(exe文件)可作為DOS外部命令使用,命令行的一般式為:
路徑\目標(biāo)程序文件名 參數(shù)1 參數(shù)2 … 參數(shù)n
10.16.?※?C主函數(shù)main可帶兩個形參,前者為int型,用于接收命令行中字符串個數(shù),后者為字符串指針數(shù)組,用于接收命令行中各字符串。帶參主函數(shù)的格式為:
void main(int 形參1,char *形參2[ ]) {函數(shù)體}
其中,
形參1=參數(shù)個數(shù)+1
形參2[0]="路徑\目標(biāo)程序文件名"
形參2[i]="參數(shù)i",i=1,2,…,n
?
第11章 結(jié)構(gòu)體與共用體
11.1.?聲明結(jié)構(gòu)體語句的一般格式為:
struct 標(biāo)識符{成員表列};
其中,成員表列為一組聲明變量的語句,這些變量稱作該結(jié)構(gòu)體的成員,又稱數(shù)據(jù)項(xiàng)、分量、域、字段等。語句結(jié)尾處的分號不可缺省,標(biāo)識符可以省略,如果不省略標(biāo)識符,則新增一個數(shù)據(jù)類型(名):
struct 標(biāo)識符
11.2.?定義結(jié)構(gòu)體變量的一般格式為:
struct 標(biāo)識符 變量表列;
也可在聲明結(jié)構(gòu)體的同時定義變量:
struct 標(biāo)識符{成員表列}變量表列;
11.3.?結(jié)構(gòu)體變量可在定義時賦初值,類似于數(shù)組賦初值。
11.4.?結(jié)構(gòu)體變量的整體使用有以下四種:
(1)?賦值:結(jié)構(gòu)體變量=同類型結(jié)構(gòu)體變量
(2)?求存儲量:sizeof(結(jié)構(gòu)體變量)
(3)?取地址:&結(jié)構(gòu)體變量
(4)?初始化——與數(shù)組初始化相似。
11.5.?結(jié)構(gòu)體中成員可作為普通變量使用,成員的訪問格式為:
結(jié)構(gòu)體變量名.成員名??或??結(jié)構(gòu)體指針->成員名
11.6.?結(jié)構(gòu)體中的成員名只在該結(jié)構(gòu)體類數(shù)據(jù)中有效,因此,不同結(jié)構(gòu)體中的成員可以同名,成員名也可與普通變量同名。
11.7.?結(jié)構(gòu)體中的成員可以是指針,其基類型可是正在定義或尚未定義的結(jié)構(gòu)體。
11.8.?以同一類型結(jié)構(gòu)體為元素的數(shù)組稱作結(jié)構(gòu)體數(shù)組,以結(jié)構(gòu)體為基類型的指針稱作結(jié)構(gòu)體指針。結(jié)構(gòu)體數(shù)組和指針的定義和使用與基本類型數(shù)組和指針相似。
11.9.?共用體與結(jié)構(gòu)體相似,主要區(qū)別有:
(1)?定義共用體的保留字為union;
(2)?同一共用體各成員的基址相同,訪問成員時必須與最后所存數(shù)據(jù)的類型相同,共用體數(shù)據(jù)所占內(nèi)存與其成員中所占內(nèi)存最大者相同;
(3)?不可初始化共用體變量。
11.10.?讀取共用體成員時,應(yīng)按最后一次所存入成員的數(shù)據(jù)類型讀取。
11.11.?共用體和結(jié)構(gòu)體的成員可以是已存在的共用體和結(jié)構(gòu)體,但不可嵌套定義。
11.12.?聲明枚舉類型語句的一般格式和功能為:
格式:enum 標(biāo)識符{枚舉元素列表}變量列表;
功能:
(1)?顯式或隱式指定所列枚舉元素所代表的整數(shù);
(2)?如果不省略標(biāo)識符,則定義一個枚舉類型(名):
enum 標(biāo)識符
枚舉元素表是一組用逗號分隔的標(biāo)識符或整數(shù)常量賦值表達(dá)式,第一個枚舉元素的默認(rèn)值為0,其它枚舉元素的值為前者加1。
11.13.?typedef語句的格式和功能為:
格式:typedef?數(shù)據(jù)類型名 別名1,…,別名n;
功能:給指定數(shù)據(jù)類型增加一組名稱。
11.14.?typedef語句也可在聲明結(jié)構(gòu)體、共用體、枚舉類型的同時給它增加一組名稱。
第13章 文件
13.1.?文件是存儲在外部介質(zhì)(存儲器)上的數(shù)據(jù)集合,每個文件均有標(biāo)識符,稱作文件名。
13.2.?C所使用的數(shù)據(jù)文件分為文本文件和二進(jìn)制文件。文本文件以字符為基本單位,存儲字符所對應(yīng)的ASCII碼,又稱TXT文件或ASCII文件;二進(jìn)制文件中的數(shù)據(jù)存儲形式與內(nèi)存中存儲形式相同。
13.3.?指向文件結(jié)構(gòu)體的指針稱作文件類型指針,簡稱文件指針或FILE指針,其定義格式為
FILE *文件指針;
13.4.?讀寫文件之前須用fopen打開或創(chuàng)建該文件,訪問結(jié)束后用fclose關(guān)閉該文件。