簡介
一般是指編譯器提供的可在c源程式中調用的函式。可分為兩類,一類是c語言標準規定的庫函式,一類是編譯器特定的庫函式。
由於著作權原因,庫函式的原始碼一般是不可見的,但在頭檔案中你可以看到它對外的接口庫函式簡介。
C語言的語句十分簡單,如果要使用C語言的語句直接計算sin或cos函式,就需要編寫頗為複雜的程式。因為C語言的語句中沒有提供直接計算sin或cos函式的語句。又如為了顯示一段文字,我們在C語言中也找不到顯示語句,只能使用庫函式printf。
C語言的庫函式並不是C語言本身的一部分,它是由編譯程式根據一般用戶的需要編制並提供用戶使用的一組程式。C的庫函式極大地方便了用戶,同時也補充了C語言本身的不足。事實上,在編寫C語言程式時,應當儘可能多地使用庫函式,這樣既可以提高程式的運行效率,又可以提高編程的質量。
這裡調用的是靜態庫。
基本概念
函式館:函式館是由系統建立的具有一定功能的函式的集合。庫中存放函式的名稱和對應的目標代碼,以及連線過程中所需的重定位信息。用戶也可以根據自己的需要建立自己的用戶函式館。
庫函式:存放在函式館中的函式。庫函式具有明確的功能、入口調用參數和返回值。
連線程式:將編譯程式生成的目標檔案連線在一起生成一個執行檔。
頭檔案:有時也稱為包含檔案。C語言庫函式與用戶程式之間進行信息通信時要使用的數據和變數,在使用某一庫函式時,都要在程式中嵌入(用#include)該函式對應的頭檔案。
由於C語言編譯系統應提供的函式館尚無國際標準。不同版本的C語言具有不同的庫函式,用戶使用時應查閱有關版本的C的庫函式參考手冊。我們以Turbo C為例簡介一下C的庫函式,並附錄中給出了Turbo C的部分常用庫函式。
九大類
(1)I/O 函式。包括各種控制台I/O、緩衝型檔案I/O和UNIX式非緩衝型檔案I/O操作。
需要的包含檔案:stdio.h
例如: getchar,putchar,printf,scanf,fopen,fclose,fgetc,fgets,fprintf,fsacnf,fputc,fputs,fseek,fread,fwrite等。
(2)字元串、記憶體和字元函式。包括對字元串進行各種操作和對字元進行操作的函式。
需要的包含檔案:string.h、mem.h、ctype.h或string.h
例如:用於檢查字元的函式:isalnum,isalpha,isdigit,islower,isspace等。用於字元串操作函式:strcat,strchr,strcmp,strcpy,strlen,strstr等。
(3)數學函式。包括各種常用的三角函式、雙曲線函式、指數和對數函式等。
需要的包含檔案:math.h
例如:sin,cos,exp(e的x次方),log,sqrt(開平方),pow(x的y次方)等。
(4)時間、日期和與系統有關的函式。對時間、日期的操作和設定計算機系統狀態等。
需要的包含檔案:time.h
例如:time返回系統的時間;asctime返回以字元串形式表示的日期和時間。
(5)動態存儲分配。包括"申請分配"和"釋放"記憶體空間的函式。
需要的包含檔案:alloc.h或stdlib.h
例如:calloc,free,malloc,realloc等。
(6)目錄管理。包括磁碟目錄建立、查詢、改變等操作的函式。
(7)過程控制。包括最基本的過程控制函式。
(8)字元螢幕和圖形功能。包括各種繪製點、線、圓、方和填色等的函式。
(9)其它函式。
內容
①函式的功能及所能完成的操作
②參數的數目和順序,以及每個參數的意義及類型
③返回值的意義及類型
④需要使用的包含檔案
這是要正確使用庫函式的必要條件。
相關區別
(1)庫函式是語言或應用程式的一部分,而系統調用是核心提供給應用程式的接口,屬於系統的一部分
(2)庫函式在用戶地址空間執行,系統調用是在核心地址空間執行,庫函式運行時間屬於用戶時間,系統調用屬於系統時間,庫函式開銷較小,系統調用開銷較大
(3)庫函式是有緩衝的,系統調用是無緩衝的
(4)系統調用依賴於平台,庫函式並不依賴
內置函式館
1、C語言與C語言庫函式的關係就類似於漢字與經典著作的關係。C語言是一種計算機程式語言,C語言函式館是由C語言編寫出來的文獻。方便後來者們更加簡單快捷的使用C語言。
2、C語言是一種程式設計的入門語言。由於C語言的語句中沒有提供直接計算sin或cos函式的語句,會造成編寫程式困難;但是函式館提供了sin和cos函式,可以拿來直接調用。顯示一段文字,我們在C語言中找不到顯示語句,只能使用庫函式printf。C語言的庫函式並不是C語言本身的一部分,它是由編譯程式根據一般用戶的需要,編制並提供用戶使用的一組程式。C的庫函式極大地方便了用戶,同時也補充了C語言本身的不足。在編寫C語言程式時,使用庫函式,既可以提高程式的運行效率,又可以提高編程的質量。