跳至內容

C 程式設計/stdlib.h

來自華夏公益教科書,開放的書籍,開放的世界

stdlib.h 是 C 程式語言的通用標準庫的標頭檔案,其中包含涉及記憶體分配、程序控制、轉換和其他功能的函式。它與 C++ 相容,在 C++ 中被稱為 cstdlib。名稱“stdlib”代表“標準庫”。

成員函式

[編輯 | 編輯原始碼]

stdlib.h 的成員可以分為以下幾類:轉換、記憶體、程序控制、排序和搜尋、數學。

名稱 描述
型別轉換
atof 字串到雙精度浮點數(不是單精度浮點數)
atoi 字串到整數
atol 字串到長整數
strtod 字串到雙精度浮點數
strtol 字串到長整數
strtoul 字串到無符號長整數
strtoll 字串到長長整數
strtoull 字串到無符號長長整數
偽隨機序列生成
int rand(void) 生成一個偽隨機數
int random(void) 生成一個偽隨機數(不是標準 C;由 POSIX 提供)
void srand(unsigned int seed) 設定 rand() 偽隨機生成器的種子 [常用慣例使用 time() 來播種]
void srandom(unsigned int seed) 設定 random() 偽隨機生成器的種子 [常用慣例使用 time() 來播種](不是標準 C;由 POSIX 提供)
記憶體分配和釋放
malloc
calloc
realloc
從堆中分配記憶體
free 將記憶體釋放回堆
程序控制
/abort/ 異常終止執行
atexit 註冊一個程式退出時的回撥函式
exit 終止程式執行
getenv 檢索環境變數
system 執行外部命令
排序、搜尋和比較
bsearch 二分搜尋陣列
qsort 排序陣列
數學
int abs(int) 整數的絕對值。
long int labs(long int) 長整數的絕對值。
div 整數除法(返回商和餘數)
ldiv 長整數除法(返回商和餘數)
多位元組/寬字元
mblen 多位元組字元的大小 [1]
mbtowc, wctomb, mbstowcs, wcstombs 多位元組和寬字元轉換 [2]

成員常量

[編輯 | 編輯原始碼]

stdlib.hstddef.h 標頭檔案定義了宏 NULL,它產生一個空指標常量,並表示一個指標值,該值保證不指向記憶體中的有效地址。

NULL 可以定義為等於 int 零、long int 零或零轉換為 void * 指標的常量表達式

#define NULL  0
#define NULL  0L
#define NULL  ((void *) 0)

雖然空指標常量在 C 中總是由符號常量 0 或轉換為 void 指標的 0 來表示,但此類指標的實際位表示是特定於系統的,並且可能包含 1 位。

成員資料型別

[編輯 | 編輯原始碼]

size_t 定義應透過包含此標頭檔案提供給引用程式碼。實際上,大多數實現並沒有在該檔案中直接定義它,而是包含檔案 stddef.h,例如,GNU C 編譯器的標準庫就是這樣做的。應用程式程式碼直接包含 stddef.h 是完全有效的,因此在不需要或不希望從該檔案中使用其他成員的情況下,可以替代 stdlib.h。整個標頭檔案設計符合例如 C99 ISO/ANSI 標準定義。 [3]

div_t, ldiv_t

[編輯 | 編輯原始碼]

還定義了兩個不太常用的資料型別,div_tldiv_t。它們是 div 和 ldiv 函式的返回型別。標準將它們定義為

typedef struct {
    int quot, rem;
} div_t;
typedef struct {
    long int quot, rem;
} ldiv_t;

非標準函式

[編輯 | 編輯原始碼]

/itoa/ 是一個常見函式,包含在 stdlib.h 的許多實現中,但標準沒有定義該函式。儘管可以透過 sprintf(標準中定義的函式)實現相同的結果,但直接呼叫 itoa 的開銷遠小於透過 sprintf 呼叫它(或等效函式)。

  • stdio.h
  • C 標準庫
  • wchar_t(寬字元)
  • div (C)(除法函式)

參考文獻

[編輯 | 編輯原始碼]
  1. C++ 資源網路 - stdlib.h 訪問於 2009 年 12 月 15 日
  2. C++ 資源網路 - stdlib.h 訪問於 2009 年 12 月 15 日
  3. http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf 第 7.20 章
華夏公益教科書