C系統(tǒng)提供了豐富的系統(tǒng)文件,稱為庫文件,C的庫文件分為兩類,一類是擴展名為".h"的文件,稱為頭文件,在前面的包含命令中我們已多次使用過。在".h"文件中包含了常量定義、 類型定義、宏定義、函數(shù)原型以及各種編譯選擇設(shè)置等信息。另一類是函數(shù)庫,包括了各種函數(shù)的目標代碼,供用戶在程序中調(diào)用。 通常在程序中調(diào)用一個庫函數(shù)時,要在調(diào)用之前包含該函數(shù)原型所在的".h" 文件。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),撫遠企業(yè)網(wǎng)站建設(shè),撫遠品牌網(wǎng)站建設(shè),網(wǎng)站定制,撫遠網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,撫遠網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
下面給出Turbo C的全部".h"文件。
Turbo C頭文件
? ALLOC.H 說明內(nèi)存管理函數(shù)(分配、釋放等)。
? ASSERT.H 定義 assert調(diào)試宏。
? BIOS.H 說明調(diào)用IBM—PC ROM BIOS子程序的各個函數(shù)。
? CONIO.H 說明調(diào)用DOS控制臺I/O子程序的各個函數(shù)。
? CTYPE.H 包含有關(guān)字符分類及轉(zhuǎn)換的名類信息(如 isalpha和toascii等)。
? DIR.H 包含有關(guān)目錄和路徑的結(jié)構(gòu)、宏定義和函數(shù)。
? DOS.H 定義和說明MSDOS和8086調(diào)用的一些常量和函數(shù)。
? ERRON.H 定義錯誤代碼的助記符。
? FCNTL.H 定義在與open庫子程序連接時的符號常量。
? FLOAT.H 包含有關(guān)浮點運算的一些參數(shù)和函數(shù)。
? GRAPHICS.H 說明有關(guān)圖形功能的各個函數(shù),圖形錯誤代碼的常量定義,正對不同驅(qū)動程序的各種顏色值,及函數(shù)用到的一些特殊結(jié)構(gòu)。
? IO.H 包含低級I/O子程序的結(jié)構(gòu)和說明。
? LIMIT.H 包含各環(huán)境參數(shù)、編譯時間限制、數(shù)的范圍等信息。
? MATH.H 說明數(shù)學(xué)運算函數(shù),還定了 HUGE VAL 宏, 說明了matherr和matherr子程序用到的特殊結(jié)構(gòu)。
? MEM.H 說明一些內(nèi)存操作函數(shù)(其中大多數(shù)也在STRING.H中說明)。
? PROCESS.H 說明進程管理的各個函數(shù),spawn…和EXEC …函數(shù)的結(jié)構(gòu)說明。
? SETJMP.H 定義longjmp和setjmp函數(shù)用到的jmp buf類型,說明這兩個函數(shù)。
? SHARE.H 定義文件共享函數(shù)的參數(shù)。
? SIGNAL.H 定義SIG[ZZ(Z] [ZZ)]IGN和SIG[ZZ(Z] [ZZ)]DFL常量,說明rajse和signal兩個函數(shù)。
? STDARG.H 定義讀函數(shù)參數(shù)表的宏。(如vprintf,vscarf函數(shù))。
? STDDEF.H 定義一些公共數(shù)據(jù)類型和宏。
? STDIO.H 定義Kernighan和Ritchie在Unix System V 中定義的標準和擴展的類型和宏。還定義標準I/O 預(yù)定義流:stdin,stdout和stderr,說明 I/O流子程序。
? STDLIB.H 說明一些常用的子程序:轉(zhuǎn)換子程序、搜索/ 排序子程序等。
? STRING.H 說明一些串操作和內(nèi)存操作函數(shù)。
? SYS\STAT.H 定義在打開和創(chuàng)建文件時用到的一些符號常量。
? SYS\TYPES.H 說明ftime函數(shù)和timeb結(jié)構(gòu)。
? SYS\TIME.H 定義時間的類型time[ZZ(Z] [ZZ)]t。
? TIME.H 定義時間轉(zhuǎn)換子程序asctime、localtime和gmtime的結(jié)構(gòu),ctime、 difftime、 gmtime、 localtime和stime用到的類型,并提供這些函數(shù)的原型。
? VALUE.H 定義一些重要常量,包括依賴于機器硬件的和為與Unix System V相兼容而說明的一些常量,包括浮點和雙精度值的范圍。
函數(shù)名: abort
功 能: 異常終止一個進程
用 法: void abort(void);
程序例:
#include stdio.h
#include stdlib.h
int main(void)
{
printf("Calling abort()\n");
abort();
return 0; /* This is never reached */
}
函數(shù)名: abs
功 能: 求整數(shù)的絕對值
用 法: int abs(int i);
程序例:
#include stdio.h
#include math.h
int main(void)
{
int number = -1234;
printf("number: %d absolute value: %d\n", number, abs(number));
return 0;
}
函數(shù)名: absread, abswirte
功 能: 絕對磁盤扇區(qū)讀、寫數(shù)據(jù)
用 法: int absread(int drive, int nsects, int sectno, void *buffer);
int abswrite(int drive, int nsects, in tsectno, void *buffer);
程序例:
/* absread example */
#include stdio.h
#include conio.h
#include process.h
#include dos.h
int main(void)
{
int i, strt, ch_out, sector;
char buf[512];
printf("Insert a diskette into drive A and press any key\n");
getch();
sector = 0;
if (absread(0, 1, sector, buf) != 0)
{
perror("Disk problem");
exit(1);
}
printf("Read OK\n");
strt = 3;
for (i=0; i80; i++)
{
ch_out = buf[strt+i];
putchar(ch_out);
}
printf("\n");
return(0);
}
函數(shù)名: access
功 能: 確定文件的訪問權(quán)限
用 法: int access(const char *filename, int amode);
程序例:
#include stdio.h
#include io.h
int file_exists(char *filename);
int main(void)
{
printf("Does NOTEXIST.FIL exist: %s\n",
file_exists("NOTEXISTS.FIL") ? "YES" : "NO");
return 0;
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
函數(shù)名: acos
功 能: 反余弦函數(shù)
用 法: double acos(double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 0.5;
result = acos(x);
printf("The arc cosine of %lf is %lf\n", x, result);
return 0;
}
函數(shù)名: allocmem
功 能: 分配DOS存儲段
用 法: int allocmem(unsigned size, unsigned *seg);
程序例:
#include dos.h
#include alloc.h
#include stdio.h
int main(void)
{
unsigned int size, segp;
int stat;
size = 64; /* (64 x 16) = 1024 bytes */
stat = allocmem(size, segp);
if (stat == -1)
printf("Allocated memory at segment: %x\n", segp);
else
printf("Failed: maximum number of paragraphs available is %u\n",
stat);
return 0;
}
函數(shù)名: arc
功 能: 畫一弧線
用 法: void far arc(int x, int y, int stangle, int endangle, int radius);
程序例:
#include graphics.h
#include stdlib.h
#include stdio.h
#include conio.h
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int stangle = 45, endangle = 135;
int radius = 100;
/* initialize graphics and local variables */
initgraph(gdriver, gmode, "");
/* read result of initialization */
errorcode = graphresult(); /* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());
/* draw arc */
arc(midx, midy, stangle, endangle, radius);
/* clean up */
getch();
closegraph();
return 0;
}
函數(shù)名: asctime
功 能: 轉(zhuǎn)換日期和時間為ASCII碼
用 法: char *asctime(const struct tm *tblock);
程序例:
#include stdio.h
#include string.h
#include time.h
int main(void)
{
struct tm t;
char str[80];
/* sample loading of tm structure */
t.tm_sec = 1; /* Seconds */
t.tm_min = 30; /* Minutes */
t.tm_hour = 9; /* Hour */
t.tm_mday = 22; /* Day of the Month */
t.tm_mon = 11; /* Month */
t.tm_year = 56; /* Year - does not include century */
t.tm_wday = 4; /* Day of the week */
t.tm_yday = 0; /* Does not show in asctime */
t.tm_isdst = 0; /* Is Daylight SavTime; does not show in asctime */
/* converts structure to null terminated
string */
strcpy(str, asctime(t));
printf("%s\n", str);
return 0;
}
函數(shù)名: asin
功 能: 反正弦函數(shù)
用 法: double asin(double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 0.5;
result = asin(x);
printf("The arc sin of %lf is %lf\n", x, result);
return(0);
}
函數(shù)名: assert
功 能: 測試一個條件并可能使程序終止
用 法: void assert(int test);
程序例:
#include assert.h
#include stdio.h
#include stdlib.h
struct ITEM {
int key;
int value;
};
/* add item to list, make sure list is not null */
void additem(struct ITEM *itemptr) {
assert(itemptr != NULL);
/* add item to list */
}
int main(void)
{
additem(NULL);
return 0;
}
函數(shù)名: atan
功 能: 反正切函數(shù)
用 法: double atan(double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 0.5;
result = atan(x);
printf("The arc tangent of %lf is %lf\n", x, result);
return(0);
}
函數(shù)名: atan2
功 能: 計算Y/X的反正切值
用 法: double atan2(double y, double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 90.0, y = 45.0;
result = atan2(y, x);
printf("The arc tangent ratio of %lf is %lf\n", (y / x), result);
return 0;
}
函數(shù)名: atexit
功 能: 注冊終止函數(shù)
用 法: int atexit(atexit_t func);
程序例:
#include stdio.h
#include stdlib.h
void exit_fn1(void)
{
printf("Exit function #1 called\n");
}
void exit_fn2(void)
{
printf("Exit function #2 called\n");
}
int main(void)
{
/* post exit function #1 */
atexit(exit_fn1);
/* post exit function #2 */
atexit(exit_fn2);
return 0;
}
函數(shù)名: atof
功 能: 把字符串轉(zhuǎn)換成浮點數(shù)
用 法: double atof(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
float f;
char *str = "12345.67";
f = atof(str);
printf("string = %s float = %f\n", str, f);
return 0;
}
函數(shù)名: atoi
功 能: 把字符串轉(zhuǎn)換成長整型數(shù)
用 法: int atoi(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
int n;
char *str = "12345.67";
n = atoi(str);
printf("string = %s integer = %d\n", str, n);
return 0;
}
函數(shù)名: atol
功 能: 把字符串轉(zhuǎn)換成長整型數(shù)
用 法: long atol(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
long l;
char *str = "98765432";
l = atol(lstr);
printf("string = %s integer = %ld\n", str, l);
return(0);
}
在安裝C語言程序的文件夾D:\VC98\Include里面全部都是頭文件,下面是一部分:
#include assert.h //設(shè)定插入點
#include ctype.h //字符處理
#include errno.h //定義錯誤碼
#include float.h //浮點數(shù)處理
#include fstream.h //文件輸入/輸出
#include iomanip.h //參數(shù)化輸入/輸出
#include iostream.h //數(shù)據(jù)流輸入/輸出
#include limits.h //定義各種數(shù)據(jù)類型最值常量
#include locale.h //定義本地化函數(shù)
#include math.h //定義數(shù)學(xué)函數(shù)
#include stdio.h //定義輸入/輸出函數(shù)
#include stdlib.h //定義雜項函數(shù)及內(nèi)存分配函數(shù)
#include string.h //字符串處理
#include strstrea.h //基于數(shù)組的輸入/輸出
#include time.h //定義關(guān)于時間的函數(shù)
#include wchar.h //寬字符處理及輸入/輸出
#include wctype.h //寬字符分類
//////////////////////////////////////////////////////////////////////////
標準 C++ (同上的不再注釋)
#include algorithm //STL 通用算法
#include bitset //STL 位集容器
#include cctype
#include cerrno
#include clocale
#include cmath
#include complex //復(fù)數(shù)類
#include cstdio
#include cstdlib
#include cstring
#include ctime
#include deque //STL 雙端隊列容器
#include exception //異常處理類
#include fstream
#include functional //STL 定義運算函數(shù)(代替運算符)
#include limits
#include list //STL 線性列表容器
#include map //STL 映射容器
#include iomanip
#include ios //基本輸入/輸出支持
#include iosfwd //輸入/輸出系統(tǒng)使用的前置聲明
#include iostream
#include istream //基本輸入流
#include ostream //基本輸出流
#include queue //STL 隊列容器
#include set //STL 集合容器
#include sstream //基于字符串的流
#include stack //STL 堆棧容器
#include stdexcept //標準異常類
#include streambuf //底層輸入/輸出支持
#include string //字符串類
#include utility //STL 通用模板類
#include vector //STL 動態(tài)數(shù)組容器
#include cwchar
#include cwctype
using namespace std;
//////////////////////////////////////////////////////////////////////////
C99 增加
#include complex.h //復(fù)數(shù)處理
#include fenv.h //浮點環(huán)境
#include inttypes.h //整數(shù)格式轉(zhuǎn)換
#include stdbool.h //布爾環(huán)境
#include stdint.h //整型環(huán)境
#include tgmath.h //通用類型數(shù)學(xué)宏
#includeconio.h 說明調(diào)用DOS控制臺I/O子程序的各個函數(shù)。
#includesio.h 包含字符串庫函數(shù)說明的頭文件
#includeslib.h 包含動態(tài)存儲與釋放函數(shù)頭文件。
在一個函數(shù)定義中,函數(shù)體之前的所有部分稱為函數(shù)頭,它給出了該函數(shù)的返回類型、每個參數(shù)的次序和類型等函數(shù)原型信息,所以當沒有專門給出函數(shù)原型說明語句時,系統(tǒng)就從函數(shù)頭中獲取函數(shù)原型信息。
一個函數(shù)的原型語句就是其函數(shù)頭的一個拷貝,當然要在最后加上語句接上結(jié)束符分號。函數(shù)原型語句與函數(shù)頭也有細微的差別,在函數(shù)原型語句中,其參數(shù)表中的每個參數(shù)允許只保留參數(shù)類型,而省略參數(shù)名,并且若使用參數(shù)名也允許與函數(shù)頭中對應(yīng)的參數(shù)名不同。
全文如下:
一)、定義格式
類型名 函數(shù)名 ([參數(shù)表]) 函數(shù)體
類型名為系統(tǒng)或用戶已定義的一種數(shù)據(jù)類型,它是函數(shù)執(zhí)行過程中通過return語句要求返回的值的類型,又稱為該函數(shù)的類型。當一個函數(shù)不需要通過return語句返回一個值時,稱為無返回值函數(shù)或無類型函數(shù),此時需要使用保留字void作為類型名。當類型名為int時,可以省略不寫,但為了清楚起見,還是寫明為好。
函數(shù)名是用戶為函數(shù)所起的名字,它是一個標識符,應(yīng)符合C++標識符的一般命名規(guī)則,用戶通過使用這個函數(shù)名和實參表可以調(diào)用該函數(shù)。
參數(shù)表又稱形式參數(shù)表,它包含有任意多個(含0個,即沒有)參數(shù)說明項,當多于一個時其前后兩個參數(shù)說明項之間必須用逗號分開。每個參數(shù)說明項由一種已定義的數(shù)據(jù)類型和一個變量標識符組成,該變量標識符成為該函數(shù)的形式參數(shù),簡稱形參,形參前面給出的數(shù)據(jù)類型稱為該形參的類型。一個函數(shù)定義中的參數(shù)表可以被省略,表明該函數(shù)為無參函數(shù),若參數(shù)表用void取代,則也表明是無參函數(shù),若參數(shù)表不為空,同時又不是保留字void,則稱為帶參函數(shù)。
函數(shù)體是一條復(fù)合語句,它以左花括號開始,到右花括號結(jié)束,中間為一條或若干條C++語句。
在一個函數(shù)的參數(shù)表中,每個參數(shù)可以為任一種數(shù)據(jù)類型,包括普通類型、指針類型、數(shù)組類型、引用類型等,一個函數(shù)的返回值可以是除數(shù)組類型之外的任何類型,包括普通類型、指針類型和引用類型等。另外,當不需要返回值時,應(yīng)把函數(shù)定義為void類型。
二)、定義格式舉例
(1) void f1() {...}
(2) void f2(int x) {...}
(3) int f3(int x,int* p) {...}
(4) char* f4(char a[]){...}
(5) int f5(int x,double d) {...}
(6) int f6(int b[10], int n) {...}
(7) void f7(float c[][N], int m, float max) {...}
(8) bool f8(ElemType* bt, ElemType item) {...}
在第一條函數(shù)定義中,函數(shù)名為f1,函數(shù)類型為void,參數(shù)表為空,此函數(shù)是一個無參無類型函數(shù)。若在f1后面的圓括號內(nèi)寫入保留字void,也表示為無參函數(shù)。
在第二條函數(shù)定義中,僅帶有一個類型為int的形參變量x,該函數(shù)沒有返回值。
在第三條函數(shù)定義中,函數(shù)名為f3,函數(shù)類型為int,函數(shù)參數(shù)為x和p,其中x為int型普通參數(shù),p為int*型指針參數(shù)。
在第四條函數(shù)定義中,函數(shù)名為f4,函數(shù)類型為char*,即字符指針類型,參數(shù)表中包含一個一維字符數(shù)組參數(shù)。注意:在定義任何類型的一維數(shù)組參數(shù)時,不需要給出維的尺寸,當然給出也是允許的,但沒有任何意義。
在第五條函數(shù)定義中,函數(shù)名為f5,返回類型為int,該函數(shù)帶有兩個形參,一個為 整型引用變量x,另一個為雙精度變量d。
在第六條函數(shù)定義中,函數(shù)名為f6,函數(shù)類型為int,即整型引用,該函數(shù)帶有兩個形參,一個是整型數(shù)組b,另一個是整型變量n。在這里定義形參數(shù)組b所給出的維的尺寸10可以被省略。
在第七條函數(shù)定義中,函數(shù)名為f7,無函數(shù)類型,參數(shù)表中包含三個參數(shù),一個為二維單精度型數(shù)組c,第二個為整型變量m,第三個為單精度引用變量max。注意:當定義一個二維數(shù)組參數(shù)時,第二維的尺寸必須給出,并且必須是一個常量表達式,第一維尺寸可給出也可不給出,其作用相同。
在第八條函數(shù)定義中,函數(shù)名為f8,返回類型為bool,即邏輯類型,該函數(shù)帶有兩個參數(shù),一個為形參bt,它為ElemType的指針引用類型,另一個為形參item,它是ElemType的引用類型,其中ElemType為一種用戶定義的類型或是通過typedef語句定義的一個類型的別名。
三)、有關(guān)函數(shù)定義的幾點說明
1. 函數(shù)原型語句
在一個函數(shù)定義中,函數(shù)體之前的所有部分稱為函數(shù)頭,它給出了該函數(shù)的返回類型、每個參數(shù)的次序和類型等函數(shù)原型信息,所以當沒有專門給出函數(shù)原型說明語句時,系統(tǒng)就從函數(shù)頭中獲取函數(shù)原型信息。
一個函數(shù)必須先定義或聲明而后才能被調(diào)用,否則編譯程序無法判斷該調(diào)用的正確性。一個函數(shù)的聲明是通過使用一條函數(shù)原型語句實現(xiàn)的,當然使用多條相同的原型語句聲明同一個函數(shù)雖然多余但也是允許的,編譯時不會出現(xiàn)錯誤。
在一個完整的程序中,函數(shù)的定義和函數(shù)的調(diào)用可以在同一個程序文件中,也可以處在不同的程序文件中,但必須確保函數(shù)原型語句與函數(shù)調(diào)用表達式出現(xiàn)在同一個文件中,并且函數(shù)原型語句出現(xiàn)在前,函數(shù)的調(diào)用出現(xiàn)在后。
通常把一個程序中用戶定義的所有函數(shù)的原型語句組織在一起,構(gòu)成一個頭文件,讓該程序中所含的每個程序文件的開始(即所有函數(shù)定義之前)包含這個頭文件(通過#include命令實現(xiàn)),這樣不管每個函數(shù)的定義在哪里出現(xiàn),都能夠確保函數(shù)先聲明后使用(即調(diào)用)這一原則的實現(xiàn)。
一個函數(shù)的原型語句就是其函數(shù)頭的一個拷貝,當然要在最后加上語句接上結(jié)束符分號。函數(shù)原型語句與函數(shù)頭也有細微的差別,在函數(shù)原型語句中,其參數(shù)表中的每個參數(shù)允許只保留參數(shù)類型,而省略參數(shù)名,并且若使用參數(shù)名也允許與函數(shù)頭中對應(yīng)的參數(shù)名不同。
2. 常量形參
在定義一個函數(shù)時,若只允許函數(shù)體訪問一個形參的值,不允許修改它的值,則應(yīng)把該形參說明為常量,這只要在形參說明的前面加上const保留字進行修飾即可。如:
void f9(const int x, const char y);
void f10(const char* p, char key);
在函數(shù)f9的函數(shù)體中只允許使用x和y的值,不允許修改它們的值。在函數(shù)f10的函數(shù)體中只允許使用p所指向的字符對象或字符數(shù)組對象的值,不允許修改它們的值,但在函數(shù)體中既允許使用也允許修改形參key的值。
3. 缺省參數(shù)
在一個函數(shù)定義中,可根據(jù)需要對參數(shù)表末尾的一個或連續(xù)若干個參數(shù)給出缺省值,當調(diào)用這個函數(shù)時,若實參表中沒有給出對應(yīng)的實參,則形參將采用這個缺省值。如:
void f11(int x, int y=0) {...}
int f12(int a[], char op='+', int k=10) {...}
函數(shù)f11的定義帶有兩個參數(shù),分別為整型變量x和y,并且y帶有缺省值0,若調(diào)用該函數(shù)的表達式為f11(a,b),將把a的值賦給x,把b的值賦給y,接著執(zhí)行函數(shù)體;若調(diào)用該函數(shù)的表達式為f11(a+b),則也是正確的調(diào)用格式,它將把a+b的值賦給x,因y沒有對應(yīng)的實參,將采用缺省值0,參數(shù)傳送后接著執(zhí)行函數(shù)體。
函數(shù)f12的定義帶有三個參數(shù),其中后兩個帶有缺省值,所以調(diào)用它的函數(shù)格式有三種,一種只帶一個實參,用于向形參a傳送數(shù)據(jù),后兩個形參采用缺省值,第二種帶有兩個實參,用于分別向形參a和op傳送數(shù)據(jù),第三個形參采用缺省值,第三種帶有三個實參,分別用于傳送給三個形參。
若一個函數(shù)帶有專門的函數(shù)原型語句,則形參的缺省值只能在該函數(shù)原型語句中給出,不允許在函數(shù)頭中給出。如對于上述的f11和f12函數(shù),其對應(yīng)的函數(shù)原型語句分別為:
void f11(int x, int y=0);
int f12(int a[], char op='+', int k=10);
函數(shù)定義應(yīng)分別改寫為:
void f11(int x, int y) {...}
int f12(int a[], char op, int k) {...}
4. 數(shù)組參數(shù)
在函數(shù)定義中的每個數(shù)組參數(shù)實際上是指向元素類型的指針參數(shù)。對于一維數(shù)組參數(shù)說明:
數(shù)據(jù)類型 數(shù)組名[]
它與下面的指針參數(shù)說明完全等價:
數(shù)據(jù)類型 *指針變量名
其中指針變量名就是數(shù)組參數(shù)說明中的數(shù)組名。如對于f12函數(shù)定義中的數(shù)組參數(shù)說明int a[],等價于指針參數(shù)說明int* a。也就是說,數(shù)組參數(shù)說明中的數(shù)組名a是一個類型為int*的形參。注意:在變量定義語句中定義的數(shù)組,其數(shù)組名代表的是一個數(shù)組,它的值是指向第一個元素的指針常量,這與數(shù)組形參的含義有區(qū)別。
對于二維數(shù)組參數(shù)說明:
數(shù)據(jù)類型 參數(shù)名[][第二維尺寸]
它與下面的指針參數(shù)說明完全等價:
數(shù)據(jù)類型 (*參數(shù)名)[第二維尺寸]
如對于f7函數(shù)定義中的二維數(shù)組參數(shù)說明float c[][N],等價于指針參數(shù)說明float(*c)[N]。
5. 函數(shù)類型
當調(diào)用一個函數(shù)時就執(zhí)行一遍循環(huán)體,對于類型為非void的函數(shù),函數(shù)體中至少必須帶有一條return語句,并且每條return語句必須帶有一個表達式,當執(zhí)行到任一條return語句時,將計算出它的表達式的值,結(jié)束整個函數(shù)的調(diào)用過程,把這個值作為所求的函數(shù)值帶回到調(diào)用位置,參與相應(yīng)的運算;對于類型為void的函數(shù),它不需要返回任何函數(shù)值,所以在函數(shù)體中既可以使用return語句,也可以不使用,對于使用的每條return語句不允許也不需要帶有表達式,當執(zhí)行到任一條return語句時,或執(zhí)行到函數(shù)體最后結(jié)束位置時,將結(jié)束函數(shù)的調(diào)用過程,返回到調(diào)用位置向下繼續(xù)執(zhí)行。
6. 內(nèi)聯(lián)函數(shù)
當在一個函數(shù)的定義或聲明前加上關(guān)鍵字inline則就把該函數(shù)聲明為內(nèi)聯(lián)函數(shù)。計算機在執(zhí)行一般函數(shù)的調(diào)用時,無論該函數(shù)多么簡單或復(fù)雜,都要經(jīng)過參數(shù)傳遞、執(zhí)行函數(shù)體和返回等操作。若把一個函數(shù)聲明為內(nèi)聯(lián)函數(shù)后,在程序編譯階段系統(tǒng)就有可能把所有調(diào)用該函數(shù)的地方都直接替換為該函數(shù)的執(zhí)行代碼,由此省去函數(shù)調(diào)用時的參數(shù)傳遞和返回操作,從而加快整個程序的執(zhí)行速度。通??砂岩恍┫鄬唵蔚暮瘮?shù)聲明為內(nèi)聯(lián)函數(shù),對于較復(fù)雜的函數(shù)則不應(yīng)聲明為內(nèi)聯(lián)函數(shù)。從用戶的角度看,調(diào)用內(nèi)聯(lián)函數(shù)和一般函數(shù)沒有任何區(qū)別。下面就是一個內(nèi)聯(lián)函數(shù)定義的例子,它返回形參值的立方。
inline int cube(int n)
{
return n*n*n;
}
分享標題:c語言函數(shù)頭大全 c語言的函數(shù)大全
URL鏈接:http://www.muchs.cn/article8/ddcedop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、自適應(yīng)網(wǎng)站、網(wǎng)站設(shè)計、電子商務(wù)、動態(tài)網(wǎng)站、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)