複製鏈接
請複製以下鏈接發送給好友

庫函數

鎖定
庫函數(Library function)是將函數封裝入庫,供用户使用的一種方式。方法是把一些常用到的函數編完放到一個文件裏,供不同的人進行調用。調用的時候把它所在的文件名用#include<>加到裏面就可以了。一般是放到lib文件裏的。
中文名
庫函數
外文名
Library function
領    域
信息科學
文    件
C源程序

庫函數簡介

一般是指編譯器提供的可在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] 

庫函數分類

(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)其它函數。

庫函數內容

①函數的功能及所能完成的操作
②參數的數目和順序,以及每個參數的意義及類型
③返回值的意義及類型
④需要使用的包含文件
這是要正確使用庫函數的必要條件。 [2] 

庫函數相關區別

(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語言程序時,使用庫函數,既可以提高程序的運行效率,又可以提高編程的質量。 [3] 
參考資料
  • 1.    周瑞平, 雷濤, 朱虹. 反編譯中的庫函數識別的實現研究[J]. 計算機應用研究, 2004, 21(12):34-35.
  • 2.    齊寧, 付文, 趙榮彩. 二進制翻譯中的庫函數識別技術研究[J]. 計算機應用, 2006, 26(4):233-235+238.
  • 3.    陳福安, 劉宗田. 8086C反編譯系統中庫函數識別技術及其實現[J]. 小型微型計算機系統, 1991(11):33-40.