stdlib.h
C標準函式庫 |
---|
一般 |
雜項 |
stdlib.h
是C標準函數庫的一個頭文件,聲明了數值與字符串轉換函數、偽隨機數生成函數、動態內存分配函數、進程控制函數等公共函數。 C++程序應調用等價的cstdlib
頭文件.
常量
stdlib.h
中定義的常量:
名字 | 值 | 描述 |
---|---|---|
NULL |
一般定義為0 , 或0L , 或(void*)0 |
表示空指針常量的巨集; 換句話說,一個常量用來表示一個總是指向無效的內存地址的指針值。 |
EXIT_FAILURE |
一個非0 值 |
用來指示程序失敗的結束,一般用於exit() .
|
EXIT_SUCCESS |
0 |
用來指示程序成功的結束,一般用於exit() ..
|
RAND_MAX |
>= 32767 |
函數rand() 所能返回的最大的值.
|
MB_CUR_MAX |
當前locale中多字節字符的最大字節數目 |
數據類型
stdlib.h
中定義的數據類型:
名字 | 描述 |
---|---|
size_t |
算子sizeof 返回結果的數據類型,實際上是無符號整型.
|
div_t , ldiv_t ,lldiv_t |
函數div , ldiv , lldiv 的返回結果的數據類型,實際上是包含兩個整數的結構類型.
|
函數
stdlib.h
中聲明的庫函數可分為六類:類型轉換、偽隨機數、動態內存分配與回收管理、進程控制、搜索及排序、簡單數學。
名字 | 描述 |
---|---|
類型轉換 | |
atof |
把字符串轉換為雙精度浮點數。相當於strtod(s, (char**)NULL) .
|
atoi |
把字符串轉換為整型. 相當於(int)strtol(s, (char**)NULL, 10) .
|
atol |
把字符串轉換為長整型. Equivalente a strtol(s, (char**)NULL, 10) .
|
atoll |
把字符串轉換為長長整型. Equivalente a strtol(s, (char**)NULL, 10) . 這是C99新增加的庫函數。
|
strtod |
把字符串轉換為雙精度浮點數,檢查結果是否溢出,並返回字符串不能轉換部分的地址. |
strtof |
把字符串轉換為單精度浮點數,檢查結果是否溢出,並返回字符串不能轉換部分的地址. |
strtold |
把字符串轉換為長雙精度浮點數,檢查結果是否溢出,並返回字符串不能轉換部分的地址. |
strtol |
把字符串轉換為長整型,檢查結果是否溢出,並返回字符串不能轉換部分的地址. |
strtoll |
把字符串轉換為long long int ,檢查結果是否溢出,並返回字符串不能轉換部分的地址.
|
strtoul |
把字符串轉換為無符號長整形,檢查結果是否溢出,並返回字符串不能轉換部分的地址. |
strtoull |
把字符串轉換為unsigned long long int ,檢查結果是否溢出,並返回字符串不能轉換部分的地址.
|
偽隨機數序列生成 | |
rand |
返回在0到RAND_MAX之間的偽隨機數. 不接受參數作為隨機數種子,因此產生的偽隨機數列相同,有利於程序調試。 |
srand |
初始化rand() 接受無符號整型參數作為偽隨機數種子.如果種子相同,偽隨機數列也相同。
|
內存的分配與釋放 | |
aligned_alloc |
邊界對齊的動態內存分配. |
calloc |
數組的動態內存分配,且初始化為全零 |
malloc |
動態內存分配,其內容不初始化 |
realloc |
釋放老的動態內存塊,按照給出的尺寸分配新的動態內存塊,老的內存塊的內容儘量複製到新的內存塊 |
free |
系統釋放動態分配的內存. 如果是空指針,則無動作發生;如果指針所指不是動態分配的內存塊或者是已釋放的內存塊,則行為是未定義的。 |
進程控制/與運行環境的溝通 | |
abort |
導致程序非正常的結束,各種流緩衝區與臨時文件直接放棄。實際上拋出raise(SIGABRT) ,預設的信號處理行為是使用退出代碼3執行終止(terminate)操作。如果SIGABRT 被捕捉且信號處理程序不返回,則程序將不終止.
|
atexit |
登記一個函數,當程序使用exit 正常退出時被登記的函數自動被調用.
|
exit |
程序正常終止。首先atexit() 登記的函數按照登記的逆序被調用;如果多次調用atexit 登記了多個函數,按照登記的逆序調用這些函數。如果一個函數被登記了多次,則程序正常退出時該函數也將被調用多次。然後所有緩衝區中的數據被寫回(flushed);所有打開著的流被關閉;tmpfile 函數創建的文件被刪除。最後,控制權返回給調用環境,返回數值表示程序返回時的狀態,0表示EXIT_SUCCESS , 1表示EXIT_FAILURE .
|
at_quick_exit |
登記一個函數,當程序使用quick_exit 正常退出時被登記的函數自動被調用.
|
_Exit |
程序正常終止, 但atexit() , at_quick_exit() , signal() 登記的函數不被調用; 打開的流、文件是否被關閉,由編譯器的實現者決定
|
getenv |
獲得某一個環境變量的字符串值,如果該環境變量不存在,返回NULL .
|
quick_exit |
程序正常終止, 但atexit() , 登記的函數不被調用; at_quick_exit() 登記的函數按登記順序的逆序被調用。
|
system |
把參數作為外部環境的命令執行。 如果參數為空,則判斷外部環境是否有命令解釋器。 |
搜索與排序 | |
bsearch |
折半搜索. |
qsort |
排序. |
整數算術 | |
abs, labs, llabs |
計算整數的絕對值. |
div, ldiv, lldiv |
計算整數除法的商與餘數. |
多字節字符/寬字符轉換 | |
mblen |
計算多字節字符的長度並確定是否為有效字符 . |
mbtowc |
多字節字符轉換為寬字符. |
wctomb |
寬字符轉換為多字節字符. |
多字節字符串/寬字符串轉換 | |
mbstowcs |
多字節字符串轉換為寬字符串. |
wcstombs |
寬字符串轉換為多字節字符串. |