跳轉到內容

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 零、長整型零或零強制轉換為 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)(除法函式)

參考文獻

[編輯 | 編輯原始碼]
華夏公益教科書