C 程式設計/stdlib.h
外觀
< C 程式設計
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 提供) |
| 記憶體分配和釋放 | |
malloccallocrealloc |
從堆分配記憶體 |
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.h 和 stddef.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 和 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)(除法函式)
- ↑ C++ 資源網路 - stdlib.h 2009 年 12 月 15 日訪問
- ↑ C++ 資源網路 - stdlib.h 2009 年 12 月 15 日訪問
- ↑ http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf 第 7.20 章
- cplusplus.com 上的 stdlib.h 摘要,2006 年 2 月訪問。
- 為什麼 size_t 很重要,2016 年 5 月訪問。