1. 程式人生 > >頭文件<stdlib.h>

頭文件<stdlib.h>

字節數 排序。 多字節字符 long 進行 call 釋放內存 sta 搜索

頭文件<stdlib.h>被發明的目的是為了定義和聲明那些沒有明顯的歸屬地宏和函數。它聲明了4中類型和幾個具有一般功能的函數,還定義了幾個宏
1、類型:
size_t 這是無符號整數類型,它是sizeof關鍵字的結果。
wchar_t 這是一個寬字符常量大小的整數類型。
div_t 這是div函數返回的結構。
ldiv_t 這是ldiv函數返回的結構。
2、宏:
NULL 這個宏是一個空指針常量的值。
EXIT_FAILURE 這是 exit 函數失敗時要返回的值。
EXIT_SUCCESS 這是 exit 函數成功時要返回的值。
RAND_MAX 這個宏是 rand 函數返回的最大值。
MB_CUR_MAX 這個宏表示在多字節字符集中的最大字符數,不能大於 MB_LEN_MAX。
3、函數:
3.1字符轉換函數
double atof(const char *nptr);
說明:把參數 str 所指向的字符串轉換為一個浮點數(類型為 double 型)。
參數:nptr -- 要轉換為浮點數的字符串。
返回值:函數返回轉換後的雙精度浮點數,如果沒有執行有效的轉換,則返回零(0.0)。

int atoi(const char *nptr);
說明:把參數 str 所指向的字符串轉換為一個整數(類型為 int 型)。
參數:nptr -- 要轉換為整數的字符串。
返回值:該函數返回轉換後的長整數,如果沒有執行有效的轉換,則返回零。

long int atol(const char *nptr);
說明:把參數 str 所指向的字符串轉換為一個長整數(類型為 long int 型)。
參數:nptr -- 要轉換為長整數的字符串。
返回值:該函數返回轉換後的長整數,如果沒有執行有效的轉換,則返回零。

double strtod(const char *nptr,char **endptr);
說明:把參數 nptr 所指向的字符串轉換為一個浮點數(類型為 double 型)。
參數:nptr -- 要轉換為雙精度浮點數的字符串。
endptr -- 對類型為 char* 的對象的引用,其值由函數設置為 nptr 中數值後的下一個字符。
返回值:該函數返回轉換後的雙精度浮點數,如果沒有執行有效的轉換,則返回零(0.0)。

long int strtol(const char *nptr,char **endptr,int base);
說明:把參數 nptr 所指向的字符串轉換為一個長整數(類型為 long int 型)。
參數:nptr -- 要轉換為長整數的字符串。
endptr -- 對類型為 char* 的對象的引用,其值由函數設置為 nptr 中數值後的下一個字符。
base -- 基數,必須介於 2 和 36(包含)之間,或者是特殊值 0。
返回值:該函數返回轉換後的長整數,如果沒有執行有效的轉換,則返回一個零值。

unsigned long int strtoul(const char *nptr,char **endptr,int base);
說明:把參數 nptr 所指向的字符串轉換為一個無符號長整數(類型為 unsigned long int 型)。
參數:nptr -- 要轉換為無符號長整數的字符串。
endptr -- 對類型為 char* 的對象的引用,其值由函數設置為 nptr 中數值後的下一個字符。
base -- 基數,必須介於 2 和 36(包含)之間,或者是特殊值 0。
返回值:
3.2偽隨機序列產生函數
int rand(void);
說明:返回一個範圍在 0 到 RAND_MAX 之間的偽隨機數。
返回值:該函數返回一個範圍在 0 到 RAND_MAX 之間的整數值。

void srand(unsigned in seed);
說明:該函數播種由函數 rand 使用的隨機數發生器。
參數:seed -- 這是一個整型值,用於偽隨機數生成算法播種。
返回值:該函數不返回任何值。
3.3內存管理函數
void *calloc(size_t nmemb,size_t size);
說明:分配所需的內存空間,並返回一個指向它的指針。
參數:nmemb -- 要被分配的元素個數。
size -- 元素的大小。
返回值:該函數返回一個指針,指向已分配的內存。如果請求失敗,則返回 NULL。

void free(void *ptr);
說明:釋放之前調用 calloc、malloc 或 realloc 所分配的內存空間。
參數:ptr -- 指針指向一個要釋放內存的內存塊,該內存塊之前是通過調用 malloc、calloc 或 realloc 進行分配內存的。如果傳遞的參數是一個空指針,則不會執行任何動作。
返回值:該函數不返回任何值。

void *malloc(size_t size);
說明:分配所需的內存空間,並返回一個指向它的指針。
參數:size -- 內存塊的大小,以字節為單位。
返回值:該函數返回一個指針 ,指向已分配大小的內存。如果請求失敗,則返回 NULL。

void *realloc(void *ptr,size_t size);
說明:嘗試重新調整之前調用 malloc 或 calloc 所分配的 ptr 所指向的內存塊的大小。
參數:ptr -- 指針指向一個要重新分配內存的內存塊,該內存塊之前是通過調用 malloc、calloc 或 realloc 進行分配內存的。如果為空指針,則會分配一個新的內存塊,且函數返回一個指向它的指針。
size -- 內存塊的新的大小,以字節為單位。如果大小為 0,且 ptr 指向一個已存在的內存塊,則 ptr 所指向的內存塊會被釋放,並返回一個空指針。
返回值:該函數返回一個指針 ,指向重新分配大小的內存。如果請求失敗,則返回 NULL。
3.4環境通信函數
void abort(void);
說明:使一個異常程序終止。
返回值:該函數不返回任何值。

int atexit(void (*func)(void));
說明:當程序正常終止時,調用指定的函數 func。
參數:func -- 在程序終止時被調用的函數。
返回值:如果函數成功註冊,則該函數返回零,否則返回一個非零值。

void exit(int status);
說明:使程序正常終止。
參數:status -- 返回給父進程的狀態值。
返回值:該函數不返回值。

char *getenv(const char *name);
說明:搜索 name 所指向的環境字符串,並返回相關的值給字符串。
參數:name -- 包含被請求變量名稱的 C 字符串。
返回值:該函數返回一個以 null 結尾的字符串,該字符串為被請求環境變量的值。如果該環境變量不存在,則返回 NULL。

int system(const char *string);
說明:由 string 指定的命令傳給要被命令處理器執行的主機環境。
參數:string -- 包含被請求變量名稱的 C 字符串。
返回值:如果發生錯誤,則返回值為 -1,否則返回命令的狀態。
3.5查找和排序函數
void *bsearch(const void *key,const void *base,size_t nmemb,size_t size,int (*compar)(const void *,const void *));
說明:執行二分查找。
參數:key -- 指向要查找的元素的指針,類型轉換為 void*。
base -- 指向進行查找的數組的第一個對象的指針,類型轉換為 void*。
nmemb -- base 所指向的數組中元素的個數。
size -- 數組中每個元素的大小,以字節為單位。
compar -- 用來比較兩個元素的函數。
返回值:如果查找成功,該函數返回一個指向數組中匹配元素的指針,否則返回空指針。.

void qsort(void *base,size_t nmemb,size_t size,int (*compar)(const void *,const void *));
說明:數組排序。
參數:base -- 指向要排序的數組的第一個元素的指針。
nmemb -- 由 base 指向的數組中元素的個數。
size -- 數組中每個元素的大小,以字節為單位。
compar -- 用來比較兩個元素的函數。
返回值:該函數不返回任何值。
3.6整數算數函數
int abs(int j);
說明:返回 j 的絕對值。
參數:j -- 完整的值。
返回值:該函數返回 j 的絕對值。

div_t div(int mmer,int denom);
說明:分子除以分母。
參數:mmer -- 分子。
denom -- 分母。
返回值:該函數返回定義在 <cstdlib> 中的結構中的值,該結構有兩個成員,如 div_t:int quot; int rem;。

long int labs(long int j);
說明:返回 j 的絕對值
參數:j -- 完整的值。
返回值:該函數返回 j 的絕對值。

ldiv_t ldiv(long int numer,long int denom);
說明:分子除以分母。
參數:numer -- 分子。
denom -- 分母。
返回值:該函數返回定義在 <cstdlib> 中的結構中的值,該結構有兩個成員,如 ldiv_t:long quot; long rem;。
3.7多字節字符函數
int mblen(const char *s,size_t n);
說明:返回參數 s 所指向的多字節字符的長度。
參數:s -- 指向多字節字符的第一個字節的指針。
n -- 要檢查的字符長度的最大字節數。
返回值:如果識別了一個非空寬字符,mblen() 函數返回 s 開始的多字節序列解析的字節數。如果識別了一個空寬字符,則返回 0。如果識別了一個無效的多字節序列,或者不能解析一個完整的多字節字符,則返回 -1。

int mbtowc(wchar_t *pwc,const char *s,size_t n);
說明:檢查參數 s 所指向的多字節字符。
參數:pwc -- 指向類型為 wchar_t 對象的指針。
s -- 指向多字節字符的第一個字節的指針。
n -- 要被檢查的最大字節數。
返回值:如果 s 不為 NULL,mbtowc() 函數返回 str 開始消耗的字節數,如果指向一個空字節,則返回 0,如果操作失敗,則返回 -1。
如果 s 為 NULL,如果編碼具有移位狀態,則 mbtowc() 函數返回非零,如果編碼是無狀態的,則返回零。

int wctomb(char *s,wchar_t wchar);
說明:檢查對應於參數 wchar 所給出的多字節字符的編碼。
參數:s -- 一個指針,指向一個足以存儲多字節字符的數組。
wchar -- 類型為 wchar_t 的寬字符。
返回值:如果 s 不為 NULL,wctomb() 函數返回寫入字節數組中的字節數。如果 wchar 不能被表示為一個多字節序列,則會返回 -1。
如果 s 為 NULL,如果編碼具有移位狀態,則 wctomb() 函數返回非零,如果編碼是無狀態的,則返回零。
3.8多字節串函數
size_t mbstowcs(wchar_t *pwcs,const char *s,size_t n);
說明:把參數 s 所指向的多字節字符的字符串轉換為參數 pwcs 所指向的數組。
參數:pwcs -- 指向一個 wchar_t 元素的數組,數組長度足以存儲一個最大字符長度的寬字符串。
s -- 要被轉換的多字節字符字符串。
n -- 要被轉換的最大字符數。
返回值:該函數返回轉換的字符數,不包括結尾的空字符。如果遇到一個無效的多字節字符,則返回 -1 值。

size_t wcstombs(char *s,const wchar_t *pwcs,size_t n);
說明:把數組 pwcs 中存儲的編碼轉換為多字節字符,並把它們存儲在字符串 s 中。
參數:s -- 指向一個 char 元素的數組,至少有 n 字節長。
pwcs -- 要被轉換的寬字符字符串。
n -- 要被寫入到 s 中的最大字節數。
返回值:該函數返回轉換和寫入到 s 中的字節數,不包括結尾的空字符。如果遇到一個無效的多字節字符,則返回 -1 值。

頭文件<stdlib.h>