C語(yǔ)言中一個(gè)函數(shù)(function)是一個(gè)可以從程序其它地方調(diào)用執(zhí)行的語(yǔ)句塊。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的嶧城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1、通過(guò)使用函數(shù)(functions)我們可以把我們的程序以更模塊化的形式組織起來(lái),從而利用C語(yǔ)言所支持的結(jié)構(gòu)化程序設(shè)計(jì)。
2、從數(shù)學(xué)角度,函數(shù)即集合A和集合B之間的映射關(guān)系。實(shí)際上計(jì)算機(jī)中的函數(shù)概念也是源于此,因此,一般函數(shù),都有形參和返回值。
3、從計(jì)算機(jī)組成原理的角度來(lái)看,函數(shù)即是一個(gè)小型的計(jì)算機(jī)系統(tǒng),依據(jù)馮諾伊曼的“存儲(chǔ)程序原理”,每一個(gè)計(jì)算機(jī)系統(tǒng)包含:輸入系統(tǒng)、輸出系統(tǒng)、運(yùn)算器以及控制器,實(shí)際上對(duì)于C語(yǔ)言中的函數(shù)來(lái)說(shuō),它是“存儲(chǔ)程序原理”的軟實(shí)現(xiàn),其中形參、實(shí)參這是輸入系統(tǒng),返回值是輸出系統(tǒng),函數(shù)體中的運(yùn)算符,比如+、-、*、/四則運(yùn)算即為運(yùn)算器,而邏輯運(yùn)算符以及if、while等控制語(yǔ)句便是一個(gè)控制器。
一是函數(shù)名,最好是讓人一看就知道這個(gè)函數(shù)是干什麼用的,起碼別讓人誤解。
二是參數(shù)個(gè)數(shù),一般是越少越好
三是注釋,這玩意對(duì)寫的人不重要,對(duì)讀的人可就重要了
四是函數(shù)大小,據(jù)說(shuō)嚴(yán)格的時(shí)候,函數(shù)體不能超過(guò)5行,做不到的話,能短點(diǎn)就短點(diǎn),太長(zhǎng)就分成幾個(gè)函數(shù)寫
C語(yǔ)言函數(shù)三要素是:定義域、值域和對(duì)應(yīng)法則。
一,C語(yǔ)言函數(shù)定義域
(1)無(wú)參函數(shù)定義的一般形式如下:
類型標(biāo)識(shí)符 ?函數(shù)名(){
聲明部分
語(yǔ)句
}
其中類型標(biāo)識(shí)符和函數(shù)名稱為函數(shù)頭。類型標(biāo)識(shí)符指明了本函數(shù)的類型,函數(shù)的類型實(shí)際上是函數(shù)返回值的類型。該類型標(biāo)識(shí)符與前面介紹的各種說(shuō)明符相同。函數(shù)名是由用戶定義的標(biāo)識(shí)符,函數(shù)名后有一個(gè)空括號(hào),其中無(wú)參數(shù),但括號(hào)不可少。
{}中的內(nèi)容稱為函數(shù)體。在函數(shù)體中聲明部分,是對(duì)函數(shù)體內(nèi)部所用到的變量的類型說(shuō)明。
在很多情況下都不要求無(wú)參函數(shù)有返回值,此時(shí)函數(shù)類型符可以寫為void。
這里,只把main改為Hello作為函數(shù)名,其余不變。Hello函數(shù)是一個(gè)無(wú)參函數(shù),當(dāng)被其它函數(shù)調(diào)用時(shí),輸出Hello world字符串。
(2)有參函數(shù)定義的一般形式
有參函數(shù)定義的一般形式如下:
類型標(biāo)識(shí)符 ?函數(shù)名(形式參數(shù)表列){
聲明部分
語(yǔ)句
}
有參函數(shù)比無(wú)參函數(shù)多了一個(gè)內(nèi)容,即形式參數(shù)表列。在形參表中給出的參數(shù)稱為形式參數(shù),它們可以是各種類型的變量,各參數(shù)之間用逗號(hào)間隔。在進(jìn)行函數(shù)調(diào)用時(shí),主調(diào)函數(shù)將賦予這些形式參數(shù)實(shí)際的值。形參既然是變量,必須在形參表中給出形參的類型說(shuō)明。
例如,定義一個(gè)函數(shù),用于求兩個(gè)數(shù)中的大數(shù),可寫為:
第一行說(shuō)明max函數(shù)是一個(gè)整型函數(shù),其返回的函數(shù)值是一個(gè)整數(shù)。形參為a,b,均為整型量。a,b的具體值是由主調(diào)函數(shù)在調(diào)用時(shí)傳送過(guò)來(lái)的。在{}中的函數(shù)體內(nèi),除形參外沒有使用其它變量,因此只有語(yǔ)句而沒有聲明部分。在max函數(shù)體中的return語(yǔ)句是把a(bǔ)(或b)的值作為函數(shù)的值返回給主調(diào)函數(shù)。有返回值函數(shù)中至少應(yīng)有一個(gè)return語(yǔ)句。
在C程序中,一個(gè)函數(shù)的定義可以放在任意位置,既可放在主函數(shù)main之前,也可放在main之后。例如:可把max 函數(shù)置在main之后,也可以把它放在main之前。修改后的程序如下所示。
二,C語(yǔ)言的值域
函數(shù)的值是指函數(shù)被調(diào)用之后, 執(zhí)行函數(shù)體中的程序段所取得的并返回給主調(diào)函數(shù)的值。如調(diào)用正弦函數(shù)取得正弦值,調(diào)用例5.1的max函數(shù)取得的最大數(shù)等。對(duì)函數(shù)的值(或稱函數(shù)返回值)有以下一些說(shuō)明:
1. 函數(shù)的值只能通過(guò)return語(yǔ)句返回主調(diào)函數(shù)。return 語(yǔ)句的一般形式為:
return 表達(dá)式;
或者為:
return (表達(dá)式);
該語(yǔ)句的功能是計(jì)算表達(dá)式的值,并返回給主調(diào)函數(shù)。 在函數(shù)中允許有多個(gè)return語(yǔ)句,但每次調(diào)用只能有一個(gè)return 語(yǔ)句被執(zhí)行, 因此只能返回一個(gè)函數(shù)值。
2. 函數(shù)值的類型和函數(shù)定義中函數(shù)的類型應(yīng)保持一致。 如果兩者不一致,則以函數(shù)類型為準(zhǔn),自動(dòng)進(jìn)行類型轉(zhuǎn)換。 3. 如函數(shù)值為整型,在函數(shù)定義時(shí)可以省去類型說(shuō)明。
4. 不返回函數(shù)值的函數(shù),可以明確定義為“空類型”, 類型說(shuō)明符為“void”。如例5.3中函數(shù)s并不向主函數(shù)返函數(shù)值,因此可定義為:
void s(int n)
{ ……
}
三,C語(yǔ)言函數(shù)對(duì)應(yīng)法則(C語(yǔ)言函數(shù)的調(diào)用)
函數(shù)調(diào)用的一般形式為:
函數(shù)名(實(shí)參列表);
實(shí)參可以是常數(shù)、變量、表達(dá)式等,多個(gè)實(shí)參用逗號(hào),分隔。
在C語(yǔ)言中,函數(shù)調(diào)用的方式有多種,例如:
在函數(shù)調(diào)用中還應(yīng)該注意的一個(gè)問題是求值順序的問題。所謂求值順序是指對(duì)實(shí)參列表中各個(gè)參數(shù)是自左向右使用呢,還是自右向左使用。對(duì)此,各系統(tǒng)的規(guī)定不一定相同。
【示例】在VC6.0下運(yùn)行以下代碼。
運(yùn)行結(jié)果:
8 7 6 7
可見VC 6.0是按照從右至左的順序求值。如果按照從左至右求值,結(jié)果應(yīng)為:
9 ?10 ?9 ?8
函數(shù)的嵌套調(diào)用
函數(shù)不能嵌套定義,但可以嵌套調(diào)用,也就是在一個(gè)函數(shù)的定義中出現(xiàn)對(duì)另一個(gè)函數(shù)的調(diào)用。這樣就出現(xiàn)了函數(shù)的嵌套調(diào)用,即在被調(diào)函數(shù)中又調(diào)用其它函數(shù)。
【示例】計(jì)算sum = 1! + 2! + 3! + ... + (n-1)! + n!
分析:可以編寫兩個(gè)函數(shù),一個(gè)用來(lái)計(jì)算階乘,一個(gè)用來(lái)計(jì)算累加的和。
運(yùn)行結(jié)果:
1!+2!+...+9!+10! = 1215752192
函數(shù)聲明和函數(shù)原型
C語(yǔ)言代碼由上到下依次執(zhí)行,函數(shù)定義要出現(xiàn)在函數(shù)調(diào)用之前。
但是,如果在函數(shù)調(diào)用前進(jìn)行了函數(shù)聲明,那么函數(shù)定義就可以出現(xiàn)在任何地方了,甚至是其他文件。
函數(shù)聲明的一般形式為:
返回值類型 ?函數(shù)名( 類型 形參, 類型 形參… );
或?yàn)椋?/p>
返回值類型 ?函數(shù)名( 類型, 類型…);
函數(shù)聲明給出了函數(shù)名、返回值類型、參數(shù)列表(參數(shù)類型)等與該函數(shù)有關(guān)的信息,稱為函數(shù)原型。
函數(shù)原型的作用是告訴編譯器與該函數(shù)有關(guān)的信息,讓編譯器知道函數(shù)的存在,以及存在的形式,即使函數(shù)暫時(shí)沒有定義,也不會(huì)出錯(cuò)。
更改上面的代碼,將 factorial 和 sum 函數(shù)的定義放到 main 函數(shù)后面:
運(yùn)行結(jié)果:
1!+2!+...+9!+10! = 1215752192
C語(yǔ)言知識(shí)要點(diǎn)——轉(zhuǎn)給那些還沒把書看完的同志們
來(lái)源: 李志遠(yuǎn)的日志
1.C源程序的框架
盡管各個(gè)C源程序的功能千變?nèi)f化,但框架是不變的,主要有:編譯預(yù)處理、主函數(shù)()、函數(shù)n()等,主函數(shù)的位置不一定在最前面,可以在程序的中部或后面,主函數(shù)的名字固定為main。
2.C語(yǔ)言源程序的書寫規(guī)則:
(1)C源程序是由一個(gè)主函數(shù)和若干個(gè)其它函數(shù)組成的。
(2)函數(shù)名后必須有小括號(hào),函數(shù)體放在大括號(hào)內(nèi)。
(3)C程序必須用小寫字母書寫。
(4)每句的末尾加分號(hào)。
(5)可以一行多句。
(6)可以一句多行。
(7)可以在程序的任何位置加注釋。
3.語(yǔ)句種類
語(yǔ)句是程序的基本成分,程序的執(zhí)行就是通過(guò)一條條語(yǔ)句的執(zhí)行而得以實(shí)現(xiàn)的,根據(jù)表現(xiàn)形式及功能的不同,C語(yǔ)言的基本語(yǔ)句可以分為五大類。
(1)流程控制語(yǔ)句
流程控制語(yǔ)句的功能是控制程序的走向,程序的流程有三種基本結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),任何復(fù)雜的程序都可以由這三種基本結(jié)構(gòu)復(fù)合而成。其中后兩種結(jié)構(gòu)要用特定的流程控制語(yǔ)句實(shí)現(xiàn)。
(2)表達(dá)式語(yǔ)句
表達(dá)式語(yǔ)句的形式是:表達(dá)式;,即表達(dá)式后跟一分號(hào)";",分號(hào)是語(yǔ)句結(jié)束符,是一個(gè)語(yǔ)句必不可少的成分。表達(dá)式和表達(dá)式語(yǔ)句的區(qū)別在于表達(dá)式代表的是一個(gè)數(shù)值,而表達(dá)式語(yǔ)句則代表一種動(dòng)作。最常見的表達(dá)式語(yǔ)句是賦值語(yǔ)句。
(3)函數(shù)調(diào)用語(yǔ)句
函數(shù)調(diào)用語(yǔ)句實(shí)際上也是一種表達(dá)式語(yǔ)句,形式為:在一次函數(shù)調(diào)用的小括號(hào)后面加上一個(gè)分號(hào)。
(4)空語(yǔ)句
空語(yǔ)句的形式就是一個(gè)分號(hào),它不代表任何動(dòng)作,常常作為一個(gè)意義轉(zhuǎn)折點(diǎn)使用。
(5)復(fù)合語(yǔ)句
復(fù)合語(yǔ)句從形式上看是多個(gè)語(yǔ)句的組合,但在語(yǔ)法意義上它只相當(dāng)于一個(gè)語(yǔ)句,在任何單一語(yǔ)句存在的地方都可以是復(fù)合語(yǔ)句。注意復(fù)合語(yǔ)句中最后一個(gè)語(yǔ)句末尾的分號(hào)不能少。復(fù)合語(yǔ)句右大括號(hào)后面沒有分號(hào)。
4.運(yùn)算符
用來(lái)表示數(shù)據(jù)各種操作的符號(hào)稱為運(yùn)算符。運(yùn)算符實(shí)際上代表了一種類型數(shù)據(jù)的運(yùn)算規(guī)則。不同的運(yùn)算符具有不同的運(yùn)算規(guī)則,其操作的數(shù)據(jù)類型必須符合該運(yùn)算符的要求,運(yùn)算結(jié)果的數(shù)據(jù)類型也是固定的。
根據(jù)參加操作的數(shù)據(jù)個(gè)數(shù)多少,可以將C語(yǔ)言的運(yùn)算符分為單目運(yùn)算符,雙目運(yùn)算符和三目運(yùn)算符(三目運(yùn)算符只有條件運(yùn)算符一個(gè))。
根據(jù)運(yùn)算對(duì)象和運(yùn)算結(jié)果的數(shù)據(jù)類型可分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符等。
5.表達(dá)式
表達(dá)式是由常量、變量、函數(shù),通過(guò)運(yùn)算符連接起來(lái)而形成的一個(gè)算式。一個(gè)常量,一個(gè)變量或一個(gè)函數(shù)都可以看成是一個(gè)表達(dá)式。
表達(dá)式的種類有:
算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字位表達(dá)式、強(qiáng)制類型轉(zhuǎn)換表達(dá)式、逗號(hào)表達(dá)式(順序表達(dá)式)、條件表達(dá)式、指針表達(dá)式。
6.數(shù)據(jù)的輸入/輸出
C語(yǔ)言本身沒有輸人/輸出語(yǔ)句,數(shù)據(jù)的輸入/輸出是通過(guò)調(diào)用庫(kù)函數(shù)來(lái)實(shí)現(xiàn)的。
第二章 數(shù)據(jù)類型知識(shí)點(diǎn)
劃分?jǐn)?shù)據(jù)類型的意義是編譯系統(tǒng)對(duì)每個(gè)不同類型的數(shù)據(jù)在內(nèi)存中分配的字節(jié)數(shù)不同,不同類型的數(shù)據(jù)可以按規(guī)定參加不同類型的運(yùn)算。
1.C語(yǔ)言的數(shù)據(jù)類型
數(shù)據(jù)類型有:整型、字符型、實(shí)型單精度型、雙精度型、構(gòu)造類型數(shù)組類型、結(jié)構(gòu)體類型、共用體類型、枚舉類型、指針類型、空類型,其中整型、實(shí)型、字符型是C語(yǔ)言中的基本類型。
2.各種類型數(shù)據(jù)的定義方法
定義形式:數(shù)據(jù)類型 變量名1,變量名2,......變量名n;
3.常量與變量
(1)常量——在程序執(zhí)行期間其值不變的量。它不能被賦值。
(2)變量——在程序運(yùn)行期間其值可以改變的量。
4.各種類型數(shù)據(jù)的混合運(yùn)算
各類數(shù)據(jù)運(yùn)算前會(huì)自動(dòng)轉(zhuǎn)換成同一類型。規(guī)律如右圖示:從右向左的箭頭表示必定的轉(zhuǎn)換,如float型數(shù)據(jù)運(yùn)算前化成double型,以提高運(yùn)算精度,結(jié)果也為double型,short或char型數(shù)據(jù)運(yùn)算前化成int型,結(jié)果也為int型;從下向上的箭頭表示轉(zhuǎn)換方向是向級(jí)別高的靠攏。
5.強(qiáng)制類型變換
當(dāng)我們需要對(duì)數(shù)據(jù)進(jìn)行類型變換,而機(jī)器又不能自動(dòng)完成時(shí),就要用強(qiáng)制類型變換,形式為:(數(shù)據(jù)類型符)(被轉(zhuǎn)換對(duì)象)。
第三章 選擇知識(shí)點(diǎn)
C語(yǔ)言中實(shí)現(xiàn)選擇結(jié)構(gòu)的控制語(yǔ)句有兩種:條件分支語(yǔ)句if和開關(guān)分支語(yǔ)句switch。
1.if語(yǔ)句的三種形式:
(1) if(表達(dá)式)語(yǔ)句;
(2) if(表達(dá)式)語(yǔ)句1;
else語(yǔ)句2;
(3) if(表達(dá)式1)語(yǔ)句1;
else if(表達(dá)式2)語(yǔ)句2;
else if(表達(dá)式3)語(yǔ)句3;
...
else if(表達(dá)式n)語(yǔ)句n;
2.開關(guān)分支語(yǔ)句switch
(1)形式
switch(表達(dá)式)
{ case e1:語(yǔ)句1;break;
case e2:語(yǔ)句2;break;
case e3:語(yǔ)句3;break;
......
case en:語(yǔ)句n;break;
default :語(yǔ)句n+1;
}
(2)功能
當(dāng)表達(dá)式的值等于e1時(shí),執(zhí)行語(yǔ)句1;
當(dāng)表達(dá)式的值等于e2時(shí),執(zhí)行語(yǔ)句2;
......
當(dāng)表達(dá)式的值等于en時(shí),執(zhí)行語(yǔ)句n;
當(dāng)表達(dá)式的值與常量e1、e2......en誰(shuí)都不等時(shí),就執(zhí)行default后的語(yǔ)句
第四章 循環(huán)知識(shí)點(diǎn)
循環(huán)就是在程序執(zhí)行過(guò)程中,反復(fù)多次的執(zhí)行同一段程序。C語(yǔ)言中有三種循環(huán)語(yǔ)句。
1.while循環(huán)語(yǔ)句
形式為:while(表達(dá)式)
{
循環(huán)體
};
執(zhí)行過(guò)程是:先計(jì)算表達(dá)式的值,當(dāng)表達(dá)式的值非0時(shí)就執(zhí)行循環(huán)體,之后再判斷表達(dá)式的值,且重復(fù)以上過(guò)程;當(dāng)表達(dá)式的值為0時(shí)就結(jié)束循環(huán)。
2.do-- while循環(huán)語(yǔ)句
形式為:do
{
循環(huán)體
} while(表達(dá)式);
執(zhí)行過(guò)程是:先執(zhí)行循環(huán)體一次,再判斷表達(dá)式的值,當(dāng)表達(dá)式的值非0時(shí)就再執(zhí)行循環(huán)體,之后再判斷表達(dá)式的值,且重復(fù)以上過(guò)程;當(dāng)表達(dá)式的值為0時(shí)就結(jié)束循環(huán)。
3.for循環(huán)語(yǔ)句
形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{ 循環(huán)體 }
4.三種循環(huán)語(yǔ)句的比較
三種循環(huán)語(yǔ)句可以完成同一件事,可任選其一。
使用while和do-- while循環(huán)時(shí),要提前給循環(huán)變量賦初值。而for循環(huán)是在表達(dá)式1中賦初值的。
while循環(huán)和for循環(huán)都是先判斷條件后執(zhí)行循環(huán)體,有可能一次也不執(zhí)行循環(huán)體,do-- while循環(huán)是先執(zhí)行循環(huán)體,后判斷條件,即循環(huán)體至少也得執(zhí)行一次。for循環(huán)不限于計(jì)數(shù)循環(huán),其循環(huán)條件可以是邏輯表達(dá)式和字符表達(dá)式等。
5.循環(huán)嵌套
三種循環(huán)控制語(yǔ)句可以互相嵌套,即在一個(gè)循環(huán)體內(nèi)部又可以出現(xiàn)另一循環(huán),這種嵌套在理論上來(lái)說(shuō)可以是無(wú)限的。注意必須是一個(gè)循環(huán)完整的套住另一個(gè)循環(huán)。
6.break語(yǔ)句
break語(yǔ)句只能出現(xiàn)在三種循環(huán)語(yǔ)句和switch多分支語(yǔ)句中,其作用是用來(lái)中斷這四種語(yǔ)句的執(zhí)行。當(dāng)程序執(zhí)行到break語(yǔ)句時(shí),會(huì)跳出break語(yǔ)句所在的循環(huán)或switch分支,而直接執(zhí)行緊跟在它們后面的語(yǔ)句。
7.continue語(yǔ)句
continue語(yǔ)句只能出現(xiàn)在三種循環(huán)語(yǔ)句中,當(dāng)程序執(zhí)行到continue語(yǔ)句時(shí),其作用是提前結(jié)束本次循環(huán),自動(dòng)跳過(guò)循環(huán)體中后半部剩余的語(yǔ)句的執(zhí)行,而直接回到循環(huán)條件判斷。根據(jù)判斷的結(jié)果決定是否繼續(xù)執(zhí)行下次循環(huán)。
8. goto 語(yǔ)句
goto語(yǔ)句是一種非結(jié)構(gòu)化語(yǔ)句,其作用是使程序的執(zhí)行無(wú)條件的轉(zhuǎn)移到某一處。使用格式為: goto 標(biāo)號(hào);利用goto語(yǔ)句與if條件語(yǔ)句配合,也可以實(shí)現(xiàn)條件循環(huán)。C語(yǔ)句允許在任何語(yǔ)句前添加標(biāo)號(hào),作為跳轉(zhuǎn)目標(biāo),標(biāo)號(hào)的構(gòu)成是標(biāo)識(shí)符后面加一個(gè)":"。
第五章 數(shù)組知識(shí)點(diǎn)
數(shù)組就是同類型的一批數(shù)據(jù)的集合,用一個(gè)變量名存放,區(qū)分各元素的辦法是用下標(biāo)。
1.一維數(shù)組
類型說(shuō)明符數(shù)組名\[數(shù)組長(zhǎng)度\];
(1)數(shù)組命名要符合標(biāo)識(shí)符的命名規(guī)則。
(2)數(shù)組名后的括號(hào)必須是方括號(hào),不能是圓括號(hào)。
(3)數(shù)組長(zhǎng)度必須是正整數(shù),可以是個(gè)表達(dá)式,但不能有變量,C語(yǔ)言不支持動(dòng)態(tài)數(shù)組。
(4)數(shù)組長(zhǎng)度表示數(shù)組中元素的個(gè)數(shù)
(5)數(shù)組元素的下標(biāo)從0開始數(shù),所以最大下標(biāo)是數(shù)組的長(zhǎng)度減1。
2.多維數(shù)組(以二維為例)
類型說(shuō)明符數(shù)組名\[第一維長(zhǎng)度\]\[第二維長(zhǎng)度\];
(1)數(shù)組命名要符合標(biāo)識(shí)符的命名規(guī)則。
(2)數(shù)組名后的括號(hào)必須是兩個(gè)方括號(hào),定義時(shí)不能寫成inta\[3,4\];。
(3)數(shù)組長(zhǎng)度必須是整型常量表達(dá)式。
(4)第一維長(zhǎng)度表示數(shù)組行數(shù),第二維長(zhǎng)度表示數(shù)組列數(shù)。
(5)每個(gè)數(shù)組元素都有兩個(gè)下標(biāo),第一維表示該元素所在的行,第二維表示該元素所在的列,每一維的下標(biāo)都從0開始數(shù)。
二維數(shù)組的初始化:C語(yǔ)言規(guī)定只有靜態(tài)數(shù)組和外部數(shù)組才允許在定義時(shí)賦初值,賦初值形式如下:
static類型說(shuō)明符數(shù)組名\[第一維長(zhǎng)度\]\[第二維長(zhǎng)度\]={初值表};
二維數(shù)組的引用:二維數(shù)組不能整體引用,要引用數(shù)組的單個(gè)元素,形式為:數(shù)組名\[下標(biāo)\]\[下標(biāo)\]和普通變量的使用無(wú)任何區(qū)別。
3.字符數(shù)組
C語(yǔ)言中沒有字符串變量,字符串是靠字符數(shù)組實(shí)現(xiàn)的,所謂字符數(shù)組就是元素的數(shù)據(jù)類型為字符型的數(shù)組。
(1)字符數(shù)組的定義形式:char數(shù)組名\[數(shù)組長(zhǎng)度\];
因?yàn)镃語(yǔ)言中的整型數(shù)據(jù)和字符型數(shù)據(jù)是相通的,所以也可以這樣定義:int數(shù)組名\[數(shù)組長(zhǎng)度\];
(2)字符數(shù)組的初始化:給字符數(shù)組的初始化有兩種方式,一種是用字符常量,另一種是用字符串。形式如下:
staticchar數(shù)組名\[數(shù)組長(zhǎng)度\]={字符常量表};
staticchar數(shù)組名\[數(shù)組長(zhǎng)度\]={字符串常量};
4.數(shù)組與函數(shù)
數(shù)組經(jīng)常作為函數(shù)的參數(shù),數(shù)組做函數(shù)的參數(shù)有兩種形式,一是數(shù)組元素做函數(shù)的參數(shù),一是數(shù)組名做函數(shù)的參數(shù),當(dāng)用數(shù)組名做函數(shù)的實(shí)參時(shí)傳送的是首地址。
5.常用的字符串處理函數(shù)
C語(yǔ)言提供了一些處理字符串的標(biāo)準(zhǔn)函數(shù),用以完成一些常見的操作。對(duì)以下幾個(gè)函數(shù)要掌握其功能和調(diào)用形式。
(1)gets(字符數(shù)組名)此函數(shù)功能是從鍵盤輸入一串字符,回車后送到字符數(shù)組中,注意定義數(shù)組時(shí)數(shù)組長(zhǎng)度要足夠大。
(2)puts(字符數(shù)組名)此函數(shù)功能是將字符數(shù)組的內(nèi)容輸出到屏幕上。
(3)strcat(字符數(shù)組名1,字符數(shù)組名2)此函數(shù)功能是將字符數(shù)組1中的'\\0'去掉后將字符數(shù)組2的內(nèi)容連接到字符數(shù)組1的末尾。
(4)strcpy(字符數(shù)組名1,字符數(shù)組名2)函數(shù)功能是將字符數(shù)組2的內(nèi)容(包括'\\0')拷貝到字符數(shù)組1中,字符數(shù)組2處也可以是字符串常量。strcpy函數(shù)可以實(shí)現(xiàn)拷子串。
(5)strcmp(字符數(shù)組名1,字符數(shù)組名2)函數(shù)功能是兩個(gè)字符串(ASCII碼)比大小。
(6)strlen(字符數(shù)組名)此函數(shù)功能是求字符串的長(zhǎng)度,注意不包括'\\0'。
(7)strlwr(字符數(shù)組名)此函數(shù)功能是將字符串中的所有大寫字母都變成小寫。
(8)strupr(字符數(shù)組名)此函數(shù)功能是將字符串中的所有小寫字母都變成大寫。
第六章 函數(shù)知識(shí)點(diǎn)
每個(gè)C源程序都是由函數(shù)組成的,一個(gè)主函數(shù)和若干個(gè)其它函數(shù),C語(yǔ)言程序設(shè)計(jì)的基礎(chǔ)工作就是函數(shù)的具體編寫,C語(yǔ)言中的函數(shù)就相當(dāng)于其它高級(jí)語(yǔ)言中的子程序。
1.函數(shù)的概念
函數(shù)就是一個(gè)數(shù)據(jù)加工廠,從函數(shù)外部接收數(shù)據(jù),在函數(shù)內(nèi)部加工處理,然后得到一個(gè)結(jié)果返回給外部的調(diào)用者。所以函數(shù)就是對(duì)語(yǔ)言功能的擴(kuò)充,對(duì)函數(shù)的調(diào)用就是對(duì)功能的調(diào)用。
2.標(biāo)準(zhǔn)函數(shù)
各種高級(jí)語(yǔ)言都定義了一些標(biāo)準(zhǔn)函數(shù),C語(yǔ)言中的標(biāo)準(zhǔn)函數(shù)稱為庫(kù)函數(shù),是將一些基本的、常用的功能編成了函數(shù),供大家使用方便。使用庫(kù)函數(shù)時(shí)必須把它的頭文件用#i nclude命令包含進(jìn)來(lái),每個(gè)庫(kù)函數(shù)的功能及對(duì)應(yīng)的頭文件都會(huì)在手冊(cè)中給出。
3.自定義函數(shù)
C 語(yǔ)言也允許用戶自己編寫函數(shù)以實(shí)現(xiàn)C庫(kù)函數(shù)中沒有提供的功能,稱作自定義函數(shù)。
4.定義函數(shù)
C語(yǔ)言規(guī)定每個(gè)函數(shù)都要獨(dú)立定義,函數(shù)定義不能嵌套。
函數(shù)定義的形式:數(shù)據(jù)類型函數(shù)名(形參表)
形參說(shuō)明語(yǔ)句序列
{ 說(shuō)明語(yǔ)句序列
可執(zhí)行語(yǔ)句序列 }
5.函數(shù)調(diào)用
函數(shù)調(diào)用的形式是: 函數(shù)名(實(shí)參表)。當(dāng)實(shí)參表中有多個(gè)參數(shù)時(shí),要用逗號(hào)隔開,若被調(diào)函數(shù)無(wú)參數(shù),調(diào)用時(shí)小括號(hào)也不能省。函數(shù)調(diào)用過(guò)程是:將實(shí)參的值傳給形參,在函數(shù)體內(nèi)進(jìn)行加工處理,然后由return語(yǔ)句將函數(shù)值返回調(diào)用處。
5.全局變量和局部變量
局部變量:在函數(shù)內(nèi)部定義的變量稱為局部變量,只在本函數(shù)中有效。
全局變量:在函數(shù)外部定義的變量稱為全局變量,它的作用范圍是從定義開始到本文件結(jié)束。
6.動(dòng)態(tài)存儲(chǔ)與靜態(tài)存儲(chǔ)
內(nèi)存中的用戶數(shù)據(jù)區(qū)分為動(dòng)態(tài)存儲(chǔ)區(qū)和靜態(tài)存儲(chǔ)區(qū),動(dòng)態(tài)存儲(chǔ)區(qū)是指程序運(yùn)行期間給變量臨時(shí)分配存儲(chǔ)單元,變量用完后立即釋放單元的區(qū)域,動(dòng)態(tài)存儲(chǔ)區(qū)放的是函數(shù)的形參、自動(dòng)變量、函數(shù)調(diào)用期間的現(xiàn)場(chǎng)保護(hù)數(shù)據(jù)和返回地址。
靜態(tài)存儲(chǔ)區(qū)是指程序運(yùn)行期間給變量分配固定的存儲(chǔ)單元,放的是全局變量和局部靜態(tài)變量。
一個(gè)變量除了它的數(shù)據(jù)類型以外還有存儲(chǔ)類型,定義一個(gè)變量時(shí)應(yīng)該說(shuō)明這兩種類型。
第七章 預(yù)處理知識(shí)點(diǎn)
對(duì)高級(jí)語(yǔ)言編譯連接就是把源程序轉(zhuǎn)換成機(jī)器語(yǔ)言,C語(yǔ)言在進(jìn)行編譯之前還要預(yù)先處理三件事:宏定義命令、文件包含命令和條件編譯命令,統(tǒng)稱為預(yù)處理命令,其特點(diǎn)是:
1.所有的預(yù)處理命令都放在程序的頭部,以#開頭,且#號(hào)后面不留空格。
2.預(yù)處理命令不是C的語(yǔ)句,行尾不加分號(hào)。
3.預(yù)處理命令是在編譯預(yù)處理階段完成的,所以它們沒有任何計(jì)算、操作等執(zhí)行功能。
4.預(yù)處理命令有所變動(dòng)后,必須對(duì)程序重新進(jìn)行編譯和連接。
1.宏定義
宏定義命令的作用是給一些常用的對(duì)象重新命名,在程序中可以用宏名來(lái)引用這些對(duì)象,預(yù)處理時(shí)宏名會(huì)被代表的內(nèi)容替換,此過(guò)程稱為宏展開或宏替換。宏定義有兩種形式:
2.文件包含
使用文件包含命令可以將另—個(gè)C源程序的全部?jī)?nèi)容包含進(jìn)來(lái),其形式為:
#i nclude <文件名>或#i nclude "文件名"
通??梢园呀?jīng)常用到的,帶公用性的一些函數(shù)或符號(hào)等集合在...起形成一個(gè)源文件,然后用此命令將這個(gè)源文件包含進(jìn)來(lái),這樣可以避免在每個(gè)新程序中都要重新鍵入這些內(nèi)容。
3.條件編譯
顧名思義滿足條件時(shí)進(jìn)行編譯,為了解決程序移植問題,C語(yǔ)言提供了條件編譯命令,它能使源程序在不同的編譯環(huán)境下生成不同的目標(biāo)代碼文件。條件編譯命令有3種形式。
第八章 指針知識(shí)點(diǎn)
1.什么是指針和指針變量?
指針就是內(nèi)存地址,因?yàn)橥ㄟ^(guò)"地址"可以找到變量,所以內(nèi)存"地址"形象的稱為指針。
指針變量就是存地址的變量。在C語(yǔ)言中用一個(gè)變量存另一個(gè)變量的地址,那么就稱這個(gè)變量為指針變量,指針變量的值就是地址。通常指針變量被簡(jiǎn)稱為指針。
指針變量是有類型的,即指針值增1表示指向下一個(gè)數(shù)據(jù),如整型數(shù)據(jù)在內(nèi)存中占兩個(gè)字節(jié),它的指針變量增1是增兩個(gè)字節(jié)。如實(shí)型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié),它的指針變量增1是增4個(gè)字節(jié)。
2.怎樣定義指針變量?
定義形式為:數(shù)據(jù)類型*指針變量名1,*指針變量名2......;
3.指針的有關(guān)運(yùn)算
指針為內(nèi)存地址是整數(shù),可以進(jìn)行一些算術(shù)運(yùn)算、關(guān)系運(yùn)算、賦值運(yùn)算、特殊運(yùn)算等,但要注意運(yùn)算代表的實(shí)際意義。
4.指向數(shù)組的指針變量
(1)指向數(shù)組元素的指針變量定義形式為:inta\[10\];
int*p=a;
(2)指向一維數(shù)組的指針變量
定義形式為:inta\[3\]\[4\];
int(*p)\[4\];
p=a;
(3)指向字符串的指針變量
定義形式為: char*p="字符序列";
C語(yǔ)言中的字符串是以隱含形式的字符數(shù)組存放的,定義了指針變量p并不是將整個(gè)字符串都存放在p中了,而p中存放的是字符串的首地址。
5.指向函數(shù)的指針變量
一個(gè)函數(shù)在編譯時(shí)被分配一個(gè)入口地址,這個(gè)地址就是函數(shù)的指針,可以用一個(gè)指針變量指向它。指向函數(shù)的指針變量定義形式為:
數(shù)據(jù)類型(*指針變量名);
6.指針變量做函數(shù)的參數(shù)
(1)指針作函數(shù)的參數(shù)可以傳送地址,如數(shù)組的首地址,函數(shù)的入口地址等。
(2)指針作函數(shù)的參數(shù)也可以用地址方式傳送數(shù)據(jù)。
7.返回值是指針的函數(shù)
即函數(shù)的返回值是內(nèi)存的地址,利用這種方法可以將一個(gè)以上的數(shù)據(jù)返回給函數(shù)的調(diào)用者。定義形式如下:
數(shù)據(jù)類型*函數(shù)名(形參表)
8.指針數(shù)組
定義形式為:數(shù)據(jù)類型*數(shù)組名\[數(shù)組長(zhǎng)度\];
數(shù)組中的每個(gè)元素都是指針類型的數(shù)據(jù),這種數(shù)組被稱為指針數(shù)組。
9.指向指針的指針
定義形式為:數(shù)據(jù)類型**指針變量名;
指向指針數(shù)據(jù)的指針變量稱為指向指針的指針。
10.main函數(shù)的形參
main函數(shù)可以帶兩個(gè)形參,如:
main(argc,argv)
intargc;
char *argv\[\];
{
......
}
11.指向結(jié)構(gòu)體的指針變量
結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段的首地址。指向結(jié)構(gòu)體的指針變量定義形式為:struct結(jié)構(gòu)體類型名*指針變量名;
12.指向共用體的指針變量
共用體變量的指針就是該變量所占據(jù)的內(nèi)存段的首地址。指向共用體的指針變量定義形式為:union共用體類型名*指針變量名;
替換了的字符時(shí)(這里為正中間的字符"4"),原來(lái)的字符己不復(fù)存在。
第九章 結(jié)構(gòu)體與共用體知識(shí)點(diǎn)
結(jié)構(gòu)體類型是C語(yǔ)言的一種構(gòu)造數(shù)據(jù)類型,它是多個(gè)相關(guān)的不同類型數(shù)據(jù)的集合,相當(dāng)于其它高級(jí)語(yǔ)言中的記錄。
1.結(jié)構(gòu)體類型定義
結(jié)構(gòu)體類型的形式為:
struct結(jié)構(gòu)體類型名
{ 數(shù)據(jù)類型成員名1;
...
數(shù)據(jù)類型成員名n;
}
2.結(jié)構(gòu)體變量的定義
結(jié)構(gòu)體變量有三種定義形式:
(1)先定義結(jié)構(gòu)體類型,后定義結(jié)構(gòu)體變量。
(2)定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量。
(3)不定義結(jié)構(gòu)體類型名,直接定義結(jié)構(gòu)體變量。
3.結(jié)構(gòu)體變量的引用
(1)結(jié)構(gòu)體變量的初始化:許多C版本規(guī)定對(duì)外部或靜態(tài)存儲(chǔ)類型的結(jié)構(gòu)體變量可以進(jìn)行初始化,而對(duì)局部的結(jié)構(gòu)體變量則不可以,新標(biāo)準(zhǔn)C無(wú)此限制,允許在定義時(shí)對(duì)自動(dòng)變量初始化。
(2)結(jié)構(gòu)體成員的引用:由于C語(yǔ)言一般不允許對(duì)結(jié)構(gòu)體變量的整體引用,所以對(duì)結(jié)構(gòu)體的引用只能是對(duì)分量的引用,結(jié)構(gòu)體變量中的任一分量可以表示為:結(jié)構(gòu)體變量名·成員名
4.結(jié)構(gòu)體與數(shù)組
C語(yǔ)言中數(shù)組的成員可以是結(jié)構(gòu)體變量,結(jié)構(gòu)體變量的成員也可以是數(shù)組。
結(jié)構(gòu)體數(shù)組有三種定義形式:
(1)先定義結(jié)構(gòu)體類型,后定義結(jié)構(gòu)體數(shù)組。
(2)定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體數(shù)組。
(3)不定義結(jié)構(gòu)體類型名,直接定義結(jié)構(gòu)體變量。
5.結(jié)構(gòu)體與指針
一方面結(jié)構(gòu)體變量中的成員可以是指針變量,另一方面也可以定義指向結(jié)構(gòu)體的指針變量,指向結(jié)構(gòu)體的指針變量的值是某一結(jié)構(gòu)體變量在內(nèi)存中的首地址。
結(jié)構(gòu)體指針的定義形式:struct結(jié)構(gòu)體類型名*結(jié)構(gòu)體指針變量名。
由結(jié)構(gòu)體指針引用結(jié)構(gòu)體成員的方法
6.用指針處理鏈表
結(jié)構(gòu)體的成員可以是指針類型,并且這個(gè)指針類型就是本結(jié)構(gòu)體類型的,這樣可以構(gòu)造出一種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)—成為鏈表。所謂動(dòng)態(tài)數(shù)據(jù)就是指在編譯時(shí)不能確定數(shù)據(jù)量的多少,而是在程序執(zhí)行時(shí)才確定的數(shù)據(jù),動(dòng)態(tài)數(shù)據(jù)可以比較方便的進(jìn)行數(shù)據(jù)插人或刪除等操作。
7.結(jié)構(gòu)體與函數(shù)
結(jié)構(gòu)體變量的成員可以作函數(shù)的參數(shù)、指向結(jié)構(gòu)體變量的指針也可以作函數(shù)的參數(shù)。雖然結(jié)構(gòu)體變量名也可以作為函數(shù)的參數(shù),將整個(gè)結(jié)構(gòu)體變量進(jìn)行傳遞,但一般不這樣做,因?yàn)槿绻Y(jié)構(gòu)體的成員很多,或者有些成員是數(shù)組,則程序運(yùn)行期間,將全部成員一個(gè)一個(gè)的傳遞,既浪費(fèi)時(shí)間,又浪費(fèi)空間,開銷太大。
8.結(jié)構(gòu)體與共用體
結(jié)構(gòu)體變量中的成員可以是共用體,共用體變量中的成員可以是結(jié)構(gòu)體。
共用體
為了節(jié)省存儲(chǔ)空間,C語(yǔ)言允許將幾種不同類型的數(shù)據(jù)存放在同一段內(nèi)存單元,它們共用一個(gè)起始地址,稱做共用體。
1.共用體類型定義
union共用體類型名
{ 數(shù)據(jù)類型成員名1;
...
數(shù)據(jù)類型成員名n;
}
2.共用體變量定義
(1)先定義類型,后定義變量。
(2)定義類型的同時(shí)定義變量。
(3)不定義類型名,直接定義變量。
3.共用體變量的引用
(1)共用體變量不能整體引用,只能引用其成員,形式為:共用體變量名·成員名
(2)共用體變量的成員不能初始化,因?yàn)樗荒芊乓粋€(gè)數(shù)據(jù)。
(3)共用體變量存放的數(shù)據(jù)是最后放入的數(shù)據(jù)。
(4)共用體變量的長(zhǎng)度是最大的成員的長(zhǎng)度。
(5)可以引用共用體變量的地址、各個(gè)成員的地址,它們都是同一個(gè)地址。
(6)共用體變量不能當(dāng)函數(shù)的參數(shù)或函數(shù)的返回值,但可以用指向共用體變量的指針作函數(shù)的參數(shù)。
(7)共用體變量的成員可以是數(shù)組,數(shù)組的成員也可以是共用體變量。
第十章 位運(yùn)算知識(shí)點(diǎn)
位運(yùn)算就是按二進(jìn)制位進(jìn)行操作的運(yùn)算,運(yùn)算的對(duì)象只能是整型或字符型,不能是實(shí)型。不同長(zhǎng)度的變量進(jìn)行位運(yùn)算,系統(tǒng)會(huì)自動(dòng)右對(duì)齊,而左端的不齊部分,對(duì)于無(wú)符號(hào)數(shù)左端補(bǔ)滿0,對(duì)于有符號(hào)數(shù)則:正數(shù)左端補(bǔ)滿0,負(fù)數(shù)左端補(bǔ)滿1。
第十一章 文件知識(shí)點(diǎn)
操作系統(tǒng)是以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理的,任何一種計(jì)算機(jī)高級(jí)語(yǔ)言都要有和磁盤文件打交道的能力,否則該語(yǔ)言的功能充其量是算一算、顯示顯示而已。在C語(yǔ)言中沒有單獨(dú)的文件操作語(yǔ)句,所有對(duì)文件的操作都是通過(guò)庫(kù)函數(shù)來(lái)完成的,所以本章的重點(diǎn)是學(xué)會(huì)使用有關(guān)文件操作的庫(kù)函數(shù)。
1.文件的基本概念
2.文件類型指針
3.文件的操作
函數(shù)1。absread()讀磁盤絕對(duì)扇區(qū)函數(shù)原形:int absread(int drive,int num,int sectnum,void *buf)功能:從drive指定的驅(qū)動(dòng)器磁盤上,sectnum指定的邏輯扇區(qū)號(hào)開始讀取(通過(guò)DOS中斷0x25讀取)num個(gè)(最多64K個(gè))扇區(qū)的內(nèi)容,儲(chǔ)存于buf所指的緩沖區(qū)中。參數(shù):drive=0對(duì)應(yīng)A盤,drive=1對(duì)應(yīng)B盤。返回值:0:成功;-1:失敗。頭文件:dos.h函數(shù)2。abswrite()寫磁盤絕對(duì)扇區(qū)函數(shù)原形:int abswrite(int drive,int nsects,int lsect,void *buffer) drive=0(A驅(qū)動(dòng)器)、1(B驅(qū)動(dòng)器)、 nsects=要寫的扇區(qū)數(shù)(最多64K個(gè)); lsect=起始邏輯扇區(qū)號(hào); buffer=要寫入數(shù)據(jù)的內(nèi)存起始地址。功能:將指定內(nèi)容寫入(調(diào)用DOS中斷0x26)磁盤上的指定扇區(qū),即使寫入的地方是磁盤的邏輯結(jié)構(gòu)、文件、FAT表和目錄結(jié)構(gòu)所在的扇區(qū),也照常進(jìn)行。返回值:0:成功;-1:失敗。頭文件:dos.h函數(shù)3。atof()將字符串轉(zhuǎn)換成浮點(diǎn)數(shù)的函數(shù)原形:double atof(const char *s)功能:把s所指向的字符串轉(zhuǎn)換成double類型。 s格式為:符號(hào) 數(shù)字.數(shù)字 E符號(hào) 數(shù)字返回值:字符串的轉(zhuǎn)換值。頭文件:math.h、stdlib.h函數(shù)4。atoi()將字符串轉(zhuǎn)換成整型數(shù)的函數(shù)原形:int atoi(const char *s)功能:把s所指向的字符串轉(zhuǎn)換成int類型。 s格式為:符號(hào) 數(shù)字返回值:字符串的轉(zhuǎn)換值。若出錯(cuò)則返回0。頭文件:stdlib.h函數(shù)5。atol()將字符串轉(zhuǎn)換成長(zhǎng)整型數(shù)的函數(shù)原形:long atol(const char *s)功能:把s所指向的字符串轉(zhuǎn)換成long int類型。 s格式為:符號(hào) 數(shù)字返回值:字符串的轉(zhuǎn)換值。若出錯(cuò)則返回0。頭文件:stdlib.h函數(shù)6。bcd()把一個(gè)數(shù)轉(zhuǎn)換成對(duì)應(yīng)的BCD碼的函數(shù)原形:bcd bcd(int x) bcd bcd(double x) bcd bcd(double x,int decimals)注意:BCD碼的精度可達(dá)17位。參數(shù)decimals是可選的,用來(lái)指定轉(zhuǎn)換后小數(shù)點(diǎn)后的位數(shù)。頭文件:bcd.h函數(shù)7。bdos()原形∶int bdos(int fnum,unsigned dx,unsigned al) 其中fnum是系統(tǒng)調(diào)用號(hào);dx是傳給寄存器DX的值;al是傳給寄存器AL的值;功能∶DOS系統(tǒng)調(diào)用(INT21H)返回值∶AX中的值函數(shù)8。biosdisk()調(diào)用BIOS磁盤驅(qū)動(dòng)程序函數(shù)原形:char biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer)功能:使用中斷0x13,直接調(diào)用BIOS進(jìn)行磁盤操作參數(shù):(1)cmd: 2-數(shù)據(jù)以每扇區(qū)512字節(jié)的格式讀入buffer,起始扇區(qū)由head、track和sector定,扇區(qū)數(shù)由nsects定。 3-將buffer中的數(shù)據(jù)按每扇區(qū)512字節(jié)寫入磁盤。 4-對(duì)扇區(qū)進(jìn)行數(shù)據(jù)校驗(yàn)。 6-格式化一個(gè)磁盤并對(duì)化扇區(qū)設(shè)置化標(biāo)志。 8-返回當(dāng)前驅(qū)動(dòng)器參數(shù)在buffer的前4個(gè)字節(jié)中。 10-長(zhǎng)讀,每扇區(qū)讀入512字節(jié)加上額外的4個(gè)字節(jié)。 11-長(zhǎng)寫,每扇區(qū)寫入512字節(jié)加上額外的4個(gè)字節(jié)。 (2)drive:0-第一個(gè)軟驅(qū);1-第二個(gè)軟驅(qū);0x80-第一個(gè)硬驅(qū) (3)head:磁頭 (4)track:磁道 (5)sector:扇區(qū) (6)nsects:扇區(qū)數(shù) (7)buffer:數(shù)據(jù)緩沖區(qū),定義為unsigned char buffer[];返回值:0x00-操作成功 0x01-錯(cuò)誤命令 0x03-企圖寫具有寫保護(hù)的磁盤 0x07-驅(qū)動(dòng)器參數(shù)設(shè)置錯(cuò)誤 0x10-磁盤讀/CRC/ECC錯(cuò)誤頭文件:bios.h注:對(duì)于硬盤主引導(dǎo)記錄扇區(qū)head=0,track=0,sector=1函數(shù)9。biosprint()調(diào)用BIOS打印機(jī)I/O接口的函數(shù)原形:int biosprint(int cmd,int abyte,int port)功能:通過(guò)BIOS中斷0x17在由參數(shù)port指定的打印機(jī)上完成各種打印機(jī)功能。 port=0(LPT1) =1(LPT2); cmd=0(打印字符abyte) 1(初始化打印機(jī)端口) 2(讀打印機(jī)狀態(tài)); abyte=0-255;返回值:打印機(jī)狀態(tài) 位0(設(shè)備超時(shí));位3(I/O出錯(cuò));位4(打印機(jī)已選擇);位5(沒紙);位6(打印機(jī)確認(rèn));位7(不忙)頭文件:bios.h函數(shù)10。calloc()分配內(nèi)存函數(shù)原形:void *calloc(size_t nitems,size_t size)功能:在堆中分配一塊內(nèi)存,將該內(nèi)存的內(nèi)容全部清0。返回值:返回指向新分配內(nèi)存的指針??臻g不夠則返回NULL。頭文件:stdlib.h、calloc.h函數(shù)11。ceil()原形∶double ceil(double num)功能∶求不小于num的最小雙精度整數(shù)頭文件∶math.h函數(shù)12。cgets()讀字符串函數(shù)原形:char *cgets(char *str)功能:從控制臺(tái)讀入一個(gè)字符串,并將該字符串(和字符串長(zhǎng)度)存入有str所指向的地址中。注意:在調(diào)用cgets之前,必須將要讀入的字符串最大長(zhǎng)度存入str[0]中,返回時(shí)str[1]被設(shè)置為實(shí)際讀入的字符數(shù)。實(shí)際字符串內(nèi)容從str[2]開始,以空字符(\0)結(jié)尾。返回值:指向str[2]的指針。頭文件:conio.h函數(shù)13。chdir()改變當(dāng)前目錄的函數(shù)原形:int chdir(const char *path)功能:把由path指定的目錄改為當(dāng)前目錄。path參數(shù)中可以指定驅(qū)動(dòng)器號(hào),如"a:\\ddd", 但只是改變?cè)擈?qū)動(dòng)器上的當(dāng)前目錄,對(duì)當(dāng)前活動(dòng)驅(qū)動(dòng)器上的當(dāng)前目錄無(wú)影響。返回值:0(成功);-1(失敗)頭文件:dir.h函數(shù)14。_chmod()改變文件存取權(quán)限的函數(shù)原形:int _chmod(const char *path,int func[,int attrib])功能:讀取(func=0時(shí))或設(shè)置(func=1時(shí))DOS文件屬性。 attrib=FA_RDONLY 只讀 attrib=FA_HIDDEN 隱藏文件 attrib=FA_SYSTEM 系統(tǒng)文件 attrib=FA_LABLE 卷標(biāo) attrib=FA_DIREC 目錄 attrib=FA_ARCH 檔案 返回值:失敗時(shí)返回-1。成功時(shí)返回文件的屬性字節(jié),如果 返回值FA_RDONLY 不等于0,則文件是只讀文件;......頭文件:io.h、dos.h函數(shù)15。chmod()改變文件存取權(quán)限的函數(shù)原形:int chmod(const char *path,int amode)功能:根據(jù)amode的值,設(shè)置由path所指文件的存取權(quán)限。 amode的值 存取權(quán)限 S_IWRITE 允許寫 S_IREAD 允許讀(只讀) S_IREAD|S_IWRITE 可讀可寫 返回值:0(成功);-1(失敗)頭文件:io.h、sys\stat.h函數(shù)16。clock()原形∶long clock(void)功能∶測(cè)得從程序開始到調(diào)用處處理機(jī)所用的時(shí)間頭文件∶time.h函數(shù)17。close()關(guān)閉文件函數(shù)原形:int close(int handle)功能:關(guān)閉由文件句柄所指向的文件,句柄是調(diào)用_creat、creat、creatnew、creattemp、dup、dup2、_open或open時(shí)得到的。該函數(shù)并不在文件末尾寫一個(gè)Ctrl-Z字符,如果想用該字符結(jié)束文件,必須顯式地給出該字符。返回值:0(成功);-1(失敗)頭文件:io.h函數(shù)18。closegraph()關(guān)閉圖形函數(shù)原形:void far closegraph(void)功能:釋放圖形系統(tǒng)分配的所有內(nèi)存,將屏幕恢復(fù)到調(diào)用initgraph之前的模式。頭文件:graphics.h函數(shù)19。cos()原形∶double cos(double arg)功能∶計(jì)算arg(弧度)的余弦值頭文件∶math.h函數(shù)20。ctrlbrk()設(shè)置ctrl-break處理程序的函數(shù)原形:void ctrlbrk(int(*handle)(void))功能:修改中斷向量0x23,使用新的ctrl-break中斷處理函數(shù)。用法:ctrlbrk(函數(shù)名); 先定義函數(shù):int 函數(shù)名(void){...}頭文件:dos.h函數(shù)21。delay()暫停函數(shù)原形:void delay(unsigned milliseconds)功能:暫停當(dāng)前所執(zhí)行的程序milliseconds毫秒。頭文件:dos.h函數(shù)22。disable()屏蔽中斷的宏原形:void disble(void)功能:屏蔽中斷,只允許從外部設(shè)備來(lái)的不可屏蔽中斷(NMI)。頭文件:dos.h函數(shù)23。enable()開硬件中斷的宏原形:void enable(void)功能:開放中斷,允許接受任何設(shè)備產(chǎn)生的中斷。頭文件:dos.h函數(shù)24。exec()加載并運(yùn)行其它程序的函數(shù)族e(cuò)xecl(),execle(),execlp(),execlpe(),execv(),execve(),execvp(),execvpe()原形∶ int execl(char *path,char *arg0,*arg1,...,*argn,NULL)int execle(char *path,char *arg0,*arg1,...,*argn,NULL,char **env)int execlp(char *path,char *arg0,*arg1,...,*argn,NULL)int execlpe(char *path,char *arg0,*arg1,...,*argn,NULL,char **env)int execv(char *path,char *argv[])int execve(char *path,char *argv[],char **env)int execvp(char *path,char *argv[])int execvpe(char *path,char *argv[],char **env) 其中,path是調(diào)用的子程序的文件名,在exec后面的后綴具有某種功能: p表示函數(shù)能夠在由DOS環(huán)境變量PATH的目錄中搜索子進(jìn)程文件,如果path中未指明文件所在目錄,函數(shù)將首先在當(dāng)前目錄中找,然后在DOS環(huán)境變量指定的目錄中找。 l表示參數(shù)指針(arg0,...,argn)按單獨(dú)參數(shù)傳送。當(dāng)預(yù)先知道要傳送的參數(shù)個(gè)數(shù)時(shí),通常用帶后綴l的函數(shù)。 v表示參數(shù)指針(arg0,...,argn)按指針數(shù)組傳送。當(dāng)要傳送的參數(shù)可變時(shí),使用帶后綴v的函數(shù)。 e表示參數(shù)env可以傳送到子進(jìn)程,該函數(shù)可用來(lái)修改子進(jìn)程的環(huán)境。若無(wú)e后綴,子進(jìn)程將繼承父進(jìn)程的環(huán)境。注意:arg0+...+argn,或arg[0]+...+arg[n]的總長(zhǎng)度必需小于128字節(jié)。當(dāng)調(diào)用exec函數(shù)時(shí),原先已經(jīng)打開的文件在子進(jìn)程中仍然是打開的。功能:加載并運(yùn)行其它程序,調(diào)用時(shí)必須有足夠的內(nèi)存空間用于加載和執(zhí)行子程序,子程序?qū)⒏采w父程序。頭文件:process.h 函數(shù)25。farcalloc()從遠(yuǎn)堆中分配內(nèi)存的函數(shù)原形:void far *farcalloc(unsigned long nunits,unsigned long unitsz)功能:從遠(yuǎn)堆中為包含nunits個(gè)元素的數(shù)組分配內(nèi)存,每一區(qū)unitsz字節(jié)長(zhǎng)。用法:fptr=farcalloc(數(shù)目,sizeof(char)); 先定義:char far *fptr;注意:所有可用RAM能被分配;大于64K的塊能被分配;用遠(yuǎn)指針存取該塊。微模式不能用。返回值:返回指向新分配塊的指針,若內(nèi)存不夠,則返回NULL。頭文件:alloc.h函數(shù)26。farfree()從遠(yuǎn)堆中釋放一塊已分配內(nèi)存的函數(shù)原形:void farfree(void far *block)頭文件:alloc.h函數(shù)27。farmalloc()從遠(yuǎn)堆中分配內(nèi)存的函數(shù)原形:void far *farmalloc(unsigned long nbytes)使用方式:fptr=farmalloc(字節(jié)數(shù)); 先定義char far *fptr;功能:從遠(yuǎn)堆中分配長(zhǎng)nbytes字節(jié)的內(nèi)存。注意:所有可用RAM能被分配;大于64K的塊能被分配;用遠(yuǎn)指針存取該塊。微模式不能用。返回值:返回指向新分配內(nèi)存的指針,若內(nèi)存不夠,則返回NULL。頭文件:alloc.h函數(shù)28。farrealloc()調(diào)整遠(yuǎn)堆中已分配塊的函數(shù)原形:void far *farrealloc(void far *oldblock,unsigned long nbytes)返回值:返回調(diào)整后的新內(nèi)存地址。若不能重新分配,則返回NULL。頭文件:alloc.h函數(shù)29。fclose()關(guān)閉一個(gè)流函數(shù)原形:int fclose(FILE *stream)使用方式:fclose(文件指針名);其中文件指針名=fopen();功能:關(guān)閉指定的流,關(guān)閉前清除所有與stream相聯(lián)的緩沖區(qū),釋放系統(tǒng)分配的緩沖區(qū),但由setbuf設(shè)置的緩沖區(qū)不能自動(dòng)釋放。返回值:0(成功);EOF(失敗)頭文件:stdio.h函數(shù)30。fcloseall()關(guān)閉打開的流的函數(shù)原形:int fcloseall(void)功能:關(guān)閉所有打開的流,由stdin、stdout、stdprn、stderr和stdaux設(shè)置的流除外。返回值:關(guān)閉流的總數(shù)。如果發(fā)現(xiàn)錯(cuò)誤則返回EOF。頭文件:stdio.h 函數(shù)31。feof()檢查文件是否結(jié)束的函數(shù)原形∶int feof(FILE *fp)返回值∶文件結(jié)束返回非0值,否則返回0。頭文件∶stdio.h函數(shù)32。fgets()從流中讀取一字符串的函數(shù)原形:char *fgets(char s[],int n,FILE *stream)使用格式:fgets(字符串指針,字符個(gè)數(shù),文件指針)功能:從輸入流stream中讀入字符存到s串中。當(dāng)讀了n-1個(gè)字符或遇到換行符時(shí),函數(shù)停止讀過(guò)程。fgets在s串尾保留換行字符。讀入的最后一個(gè)字符后面加一個(gè)空字符。返回值:成功時(shí)返回字符串參數(shù)s,出錯(cuò)或遇到文件結(jié)束時(shí),返回NULL。頭文件:stdio.h函數(shù)33。findfirst()函數(shù)和findnext()函數(shù)調(diào)用方式:整形數(shù)=findfirst(文件名,結(jié)構(gòu)變量名,屬性常數(shù)組合(如0x26));其中定義struct ffblk 結(jié)構(gòu)變量名;原形:int findfirst(path,buffer,attr)和int findnext(buffer) char *path;//要檢索的文件名 struct ffblk { char ff_reserved[21]; char ff_attrib;//被檢索的文件屬性 unsigned ff_ftime;//最后修改的時(shí)間 //(0-4位:秒數(shù)/2;5-10位:分?jǐn)?shù);11-15位:小時(shí)數(shù)) unsigned ff_fdate;//最后修改的日期 //(0-4位:日;5-8位:月;9-15位:年減1980) long ff_fsize;//文件大小 char ff_name[13];//組名 }*buffer; int attr;//要檢索的文件屬性功能:檢索由path和attr指定的文件,把結(jié)果返回到buffer。findfirst返回關(guān)于第一個(gè)指定文件的信息,findnext繼續(xù)檢索。返回值:0(檢索成功),-1(沒有找到指定的文件)屬性常數(shù): FA_NORMAL(0x00) 含意:Normal file, no attributes FA_RDONLY(0x01) 含意:只讀 FA_HIDDEN(0x02) 含意:隱含文件 FA_SYSTEM(0x04) 含意:系統(tǒng)文件 FA_LABEL(0x08) 含意:卷標(biāo) FA_DIREC(0x10) 含意:子目錄 FA_ARCH(0x20) 含意:修改的文件Archive頭文件:dir.h(dos.h)函數(shù)34。floodfill()填充區(qū)域的函數(shù)原形:void far floodfill(int x,int y,int border)功能:在圖形設(shè)備上用顏色border圍起來(lái)的區(qū)域?qū)⒂卯?dāng)前填充顏色填充。(x,y)是待填充區(qū)域的起點(diǎn),若起點(diǎn)在封閉區(qū)域內(nèi),則區(qū)域內(nèi)被填充;若起點(diǎn)在封閉區(qū)域外,則區(qū)域外被填充。頭文件:graphics.h函數(shù)35。floor()原形∶double floor(double num)功能∶求不大于num的最大雙精度整數(shù)頭文件∶math.h函數(shù)36。fnmerge()建立文件路徑函數(shù)原形:void fnmerge(char *path,const char *drive,const char *dir, const char *name,const char *ext)功能:合成drive:\dir\name.ext,放在path頭文件:dir.h函數(shù)37。fnsplit()分解完整的路徑名函數(shù)原形:int fnsplit(char *path,const char *drive,const char *dir,const char *name,const char *ext)功能:把文件名路徑path分成4個(gè)部分存放。 其中drive中有冒號(hào);dir中有開始和結(jié)尾的反斜杠;ext包括開始圓點(diǎn)返回值:如果有擴(kuò)展名,則 返回值EXTENSION!=0 如果有文件名,則 返回值FILENAME!=0 如果有目錄名,則 返回值DIRECTORY!=0 如果有驅(qū)動(dòng)器號(hào),則返回值DIRVE!=0頭文件:dir.h 函數(shù)38。fopen()打開一個(gè)流函數(shù)原形:FILE *fopen(const char *filename,const char *mode)功能:打開用filename指定的文件,并使其與一個(gè)流相聯(lián)。使用方式:文件指針名=fopen("文件名","處理方式") ”處理方式”?。? "rt" 打開一個(gè)文本文件,只能讀。 "wt" 生成一個(gè)文本文件,只能寫。若文件存在則被重寫。 "at" 打開一個(gè)文本文件,只能在文件尾部添加。 "rb" 打開一個(gè)二進(jìn)制文件,只能讀。 "wb" 生成一個(gè)二進(jìn)制文件,只能寫。 "ab" 打開一個(gè)二進(jìn)制文件,只能在文件尾部添加。 "rt+" 打開一個(gè)文本文件,可讀可寫。 "wt+" 生成一個(gè)文本文件,可讀可寫。 "at+" 打開一個(gè)文本文件,可讀可添加。 "rb+" 打開一個(gè)二進(jìn)制文件,可讀可寫。 "wb+" 生成一個(gè)二進(jìn)制文件,可讀可寫。 "ab+" 打開一個(gè)二進(jìn)制文件,可讀可添加。返回值:指明流的指針(成功時(shí))或NULL(失敗時(shí))注:需先定義 FILE *文件指針名; "文件名"若用 argv[1]代替,則可使用命令行形式指定文件名函數(shù)39。FP_OFF()獲取遠(yuǎn)地址偏移量的宏原形:unsigned FP_OFF(void far *p)功能:取得和設(shè)置遠(yuǎn)指針*p的偏移量返回值:偏移量頭文件:dos.h 函數(shù)40。fprintf()傳送輸出到一個(gè)流中的函數(shù)原形:int fprintf(FILE *stream,const char *format[,argument,...])功能:①向文件指針指向的文件輸出ASCⅡ代碼 ②向顯示器輸出錯(cuò)誤信息 使用形式: ①fprintf(文件指針,"輸出格式",輸出項(xiàng)系列); ②fprintf(stderr,"錯(cuò)誤信息");使用實(shí)例:fprintf(stream,"%d %c %f",i,c,f); 其中定義FILE *stream; int i; char c; float f;返回值:成功則返回輸出的字節(jié)數(shù),錯(cuò)誤則返回EOF。頭文件:stdio.h函數(shù)41。FP_SEG()獲取遠(yuǎn)地址段值的宏原形:unsigned FP_SEG(void far *p)功能:取得和設(shè)置遠(yuǎn)指針*p段地址值返回值:段地址值頭文件:dos.hfree()釋放已分配內(nèi)存的函數(shù)原形:void free(void *block)功能:釋放由calloc、malloc、realloc函數(shù)調(diào)用所分配的內(nèi)存。頭文件:stdlib.h、alloc.h函數(shù)42。fscanf()格式化輸入函數(shù)原形:int fscanf(FILE *stream,const char *format[,address,...])功能:從一個(gè)流中掃描輸入字段,一次掃描一個(gè)字符,每個(gè)輸入字段根據(jù)format所指格式指示符格式化后,把輸入字段存在format后面由地址參數(shù)給出的位置上。使用格式:fscanf(文件指針,"輸入格式",輸入項(xiàng)系列);使用實(shí)例:fscanf(fp,"%d",b); 從fp指向的文件中讀取十進(jìn)制整數(shù) (ASCⅡ形式)賦予變量b注:當(dāng)文件指針是stdin時(shí),與scanf功能完全相同頭文件:stdio.h函數(shù)43。fseek()移動(dòng)文件指針函數(shù)原形:int fseek(FILE *stream,long offset,int whence)作用:強(qiáng)制一個(gè)文件的位置指針指向某個(gè)特定的位置(甚至超出文件的尾部)。使用格式:fseek(*文件指針,偏移(長(zhǎng)整型),起點(diǎn)) 定義 FILE *文件指針名; "起點(diǎn)"取值: 0或SEEK_SET(表示文件開頭) 1或SEEK_CUR(表示當(dāng)前位置) 2或SEEK_END(表示文件尾端)返回值:0表示成功,非0值表示失敗頭文件:stdio.h函數(shù)44。fwrite()把參數(shù)寫入流中的函數(shù)原形:size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream)功能:附加n個(gè)數(shù)據(jù)項(xiàng)(每個(gè)數(shù)據(jù)項(xiàng)長(zhǎng)度為size個(gè)字節(jié))到指定的輸出文件后,數(shù)據(jù)從ptr處開始添加。ptr是指向任意對(duì)象的指針。返回值:調(diào)用成功時(shí)返回實(shí)際寫的數(shù)據(jù)項(xiàng)數(shù),出錯(cuò)時(shí)返回一短整形數(shù)值。頭文件:stdio.h例:fwrite(s,sizeof(s),1,stream); 其中s是一結(jié)構(gòu)變量,stream=fopen();函數(shù)45。gcvt()把雙精度數(shù)轉(zhuǎn)化成字符串的函數(shù)原形∶char*gcvt(value,ndigit,buf) 其中∶double value是待轉(zhuǎn)化數(shù) int ndigit是轉(zhuǎn)化長(zhǎng)度 char *buf保存轉(zhuǎn)化后的地址頭文件∶stdlib.h函數(shù)46。geninterrupt()執(zhí)行中斷函數(shù)原形:void geninterrupt(int n)調(diào)用方式:geninterrupt(軟中斷號(hào))功能:產(chǎn)生一個(gè)8086軟中斷注:需先向寄存器傳遞入口信息(用偽變量) 例如 偽變量=要賦的值(入口信息); 調(diào)用geninterrupt()函數(shù)后得接受出口信息 例如 變量名=偽變量偽變量∶Turbo C 允許使用偽變量直接訪問相應(yīng)的8086寄存器。偽變量的類型有兩種。 ① unsigned int : _AX、 _BX、 _CX、 _DX、 _CS、 _DS、 _SS、 _ES、_SP、 _BP、 _DI、 _SI ② unsigned char: _AL、 _AH、 _BL、 _BH、 _CL、 _CH、 _DL、 _DH函數(shù)47。getc()從流中取字符的宏原形:int getc(FILE *stream)功能:返回輸入流stream中一個(gè)字符,移動(dòng)文件指針使之指向下一個(gè)字符。使用格式:字符變量=getc(文件指針) (正常情況下讀取到代碼值,讀到文件尾或出錯(cuò)時(shí)返回EOF)注:需定義 char 字符變量;FILE *文件指針;頭文件:stdio.h函數(shù)48。getch()從鍵盤無(wú)回顯地讀取一字符的函數(shù)功能:將鍵盤上輸入的單個(gè)字符的值(ASCⅡ 碼)立刻賦給字符型變量調(diào)用方式:字符形變量=getch()注:需先定義 char 字符形變量;頭文件:conio.h函數(shù)49。getchar()從stdin流中讀取一個(gè)字符的函數(shù)功能:將鍵盤上輸入的單個(gè)字符的值(ASCⅡ 碼)回車后賦給字符型變量調(diào)用方式:字符型變量=getchar()注:需先定義 char 字符型變量;頭文件:stdio.h函數(shù)50。getcurdir()讀取指定驅(qū)動(dòng)器的當(dāng)前目錄的函數(shù)原形:int getcurdir(int drive,char directory) drive=0(缺省);1(A驅(qū)動(dòng)器);... directory用來(lái)存放目錄名,不包括驅(qū)動(dòng)器名,不以反斜杠開始。返回值:0(調(diào)用成功);1(出錯(cuò))頭文件:dir.h函數(shù)61。getcwd()讀取當(dāng)前目錄的函數(shù)原形:char *getcwd(char *buf,int buflen)功能:讀取當(dāng)前目錄的完整路徑名(包括驅(qū)動(dòng)器名),最長(zhǎng)為buflen個(gè)字節(jié),存放在buf中。如果buf為NULL,函數(shù)將分配一個(gè)buflen字節(jié)長(zhǎng)的緩沖區(qū),以后可將本函數(shù)的返回值作為free函數(shù)的參數(shù)來(lái)釋放該緩沖區(qū)。返回值:若buf非空,調(diào)用成功返回buf,出錯(cuò)返回NULL;若buf為NULL,返回指向已經(jīng)分配的內(nèi)存緩沖區(qū)地址。頭文件:dir.h函數(shù)62。getdate()讀取系統(tǒng)日期函數(shù)原形:void getdate(pdate) struct date { int da_year; int da_day; int da_mon; }; struct date *pdate;頭文件:dos.h函數(shù)63。getdfree()讀取磁盤空閑空間的函數(shù)原形:void getdfree(drive,dtable) unsigned char drive;驅(qū)動(dòng)器號(hào)(0-當(dāng)前;1-A;2-B;...) struct dfree { unsigned df_avail;//可使用的簇?cái)?shù) unsigned df_total;//每個(gè)驅(qū)動(dòng)器的簇?cái)?shù) unsigned df_bsec;//每個(gè)扇區(qū)的字節(jié)數(shù) unsigned df_sclus;//每個(gè)簇的扇區(qū)數(shù)(出錯(cuò)時(shí)返回0xffff) }*dtable;功能:把由drive指定的關(guān)于驅(qū)動(dòng)器的信息返回到dtable函數(shù)64。getdisk()讀取當(dāng)前磁盤驅(qū)動(dòng)器號(hào)函數(shù)原形:int getdisk(void)功能:取得當(dāng)前驅(qū)動(dòng)器號(hào)(0=A;1=B;....)頭文件:dir.h函數(shù)65。getenv()讀取環(huán)境變量的當(dāng)前值的函數(shù)原形:char *getenv(const char *name)用法:s=getenv("環(huán)境變量名"); 需先定義char *s;功能:返回一給定的環(huán)境變量值,環(huán)境變量名可大寫或小寫。如果指定的變量在環(huán)境中未定義,則返回一空串。 頭文件:stdlib.h函數(shù)66。getimage()將指定區(qū)域的位圖象存入內(nèi)存的函數(shù)原形:void far getimage(int left,int top,int right,int bottom,void far *bitmap)功能:將圖像(矩形區(qū)域)從屏幕拷貝到內(nèi)存,*bitmap指向內(nèi)存中存放圖像的區(qū)域。該區(qū)域的前兩個(gè)字節(jié)用于存放矩形的高和寬。頭文件:graphics.h函數(shù)67。getmaxx()返回屏幕上最大的X坐標(biāo)值的函數(shù)原形:int far getmaxx(void)功能:返回當(dāng)前圖形驅(qū)動(dòng)程序和圖形模式下最大的X坐標(biāo)值。頭文件:graphics.h函數(shù)68。getmaxy()返回屏幕上最大的Y坐標(biāo)值的函數(shù)原形:int far getmaxy(void)功能:返回當(dāng)前圖形驅(qū)動(dòng)程序和圖形模式下最大的Y坐標(biāo)值。頭文件:graphics.h函數(shù)69。getpixel()讀取像素顏色的函數(shù)原形:unsigned far getpixel(int x,int y)頭文件:graphics.h函數(shù)70。getpsp()原形∶unsigned getpsp(void)功能∶使用DOS系統(tǒng)調(diào)用0x62,返回程序段前綴(PSP)的段地址頭文件∶dos.h函數(shù)71。gets()從標(biāo)準(zhǔn)輸入流stdio中讀取一字符串的函數(shù)功能:將鍵盤上輸入的字符串立刻賦予字符串變量并顯示出來(lái)調(diào)用方式:gets(字符串變量名)注:需定義 char *字符串變量名;函數(shù)72。gettime()讀取系統(tǒng)時(shí)間的函數(shù)原形:void gettime(ptime) struct time { unsigned char ti_min; unsigned char ti_hour; unsigned char ti_hund;//百分之一秒 unsigned char ti_sec; }; struct time *ptime;函數(shù)73。getvect()讀取中斷向量函數(shù)原形:void interrupt(*getvect(int interruptno))功能:讀入由interruptno(0-255之間)所指定的中斷向量值,并把該中斷向量值作為中斷函數(shù)的遠(yuǎn)指針返回。返回值:指定中斷向量的當(dāng)前4字節(jié)值。頭文件:dos.h使用實(shí)例:oldfunc=getvect(5); 先定義void interrupt(*oldfunc)(); 用后恢復(fù)setvect(5,oldfunc);函數(shù)74。getx()返回當(dāng)前圖形方式下位置的X坐標(biāo)值的函數(shù)原形:int far getx(void);頭文件:graphics.h函數(shù)75。gety()返回當(dāng)前圖形方式下位置的Y坐標(biāo)值的函數(shù)原形:int far gety(void);頭文件:graphics.h函數(shù)76。imagesize()返回保存圖像緩沖區(qū)大小的函數(shù)原形:unsigned far imagesize(int left,int top,int right,int bottom)功能:確定保存圖像所需的存儲(chǔ)區(qū)大小。返回值:返回存儲(chǔ)區(qū)的大小(字節(jié)),若所需內(nèi)存大于等于64K-1字節(jié),則返回0xffff(-1)。頭文件:graphics.h函數(shù)77。initgraph()顯示模式控制函數(shù)(初始化圖形系統(tǒng)函數(shù))功能:把圖形適配器設(shè)置為一種圖形模式,將選擇的圖形驅(qū)動(dòng)程序(在BGI文件中)裝入到內(nèi)存。調(diào)用方式: void far initgraph(int far *driver,int far *mode,char far*path) 其中: *driver可以是數(shù)值(0-10),也可是符號(hào)值(DETECT、CGA、MCGA、EGA、EGA64、EGAMONO、RESERVED、HERCMONO、ATT400、VGA、 PC3270)。 *mode參數(shù)從圖形系統(tǒng)為各種常用的圖形適配器設(shè)置的圖形模式中(CGAC0、...、IBM8514HI--見頭文件graphics.h)選取。常用的有:VGAMED或1