1.动态内存分配函数
void *malloc(size_t size):从堆中分配一块大小为size字节的内存,并返回指向该内存块的指针。如果分配失败,返回NULL。
void *calloc(size_t num, size_t size):从堆中分配num个大小为size字节的连续内存块,并将每个字节初始化为0。如果分配失败,返回NULL。
void *realloc(void *ptr, size_t size):将指针ptr指向的内存块大小重新分配为size字节,并返回指向新的内存块的指针。如果分配失败,返回NULL。如果ptr为NULL,等效于调用malloc(size)。
void free(void *ptr):释放指针ptr指向的内存块。
2.随机数生成函数
int rand(void):生成一个0到RAND_MAX(通常为32767)之间的伪随机整数。
void srand(unsigned int seed):使用seed作为随机数生成器的种子。通常使用当前时间作为种子,可以通过调用time函数来获取当前时间。
3.字符串转换函数
int atoi(const char *str):将字符串str转换为整型数。
long int atol(const char *str):将字符串str转换为长整型数。
double atof(const char *str):将字符串str转换为双精度浮点数。
long int strtol(const char *str, char **endptr, int base):将字符串str转换为长整型数,endptr指向str中第一个不能转换的字符。base指定进制,可以为2-36或0。如果base为0,将根据str的前缀自动判断进制。
double strtod(const char *str, char **endptr):将字符串str转换为双精度浮点数,endptr指向str中第一个不能转换的字符。
unsigned long int strtoul(const char *str, char **endptr, int base):将字符串str转换为无符号长整型数,endptr指向str中第一个不能转换的字符。base的取值与strtol相同。
4.环境变量函数
char *getenv(const char *name):获取名为name的环境变量的值,返回一个指向该变量值的字符串指针。如果不存在该环境变量,返回NULL。
int putenv(const char *string):设置环境变量。string应该包含一个形如name=value的字符串,如果成功,返回0,否则返回-1。
5.进程控制函数(续)
void exit(int status):终止当前进程并返回status给父进程。status为0表示正常终止,非0表示异常终止。
_Noreturn void abort(void):引发异常终止信号,进程会立即结束。
int atexit(void (*func)(void)):注册一个函数,当程序正常终止时调用该函数。可以注册多个函数,按照注册顺序倒序调用。
char *getcwd(char *buf, size_t size):获取当前工作目录的路径。将路径字符串存储在buf中,buf的大小为size字节。如果buf为NULL,函数会分配足够的空间以存储路径,并返回指向路径字符串的指针。如果发生错误,返回NULL。
int chdir(const char *path):改变当前工作目录为path指定的目录。
int execvp(const char *file, char *const argv[]):将当前进程替换为由file指定的可执行文件。argv为命令行参数数组,最后一个元素必须为NULL。如果调用成功,该函数不会返回;否则返回-1。
6.数学函数
double fabs(double x):计算x的绝对值。
double sqrt(double x):计算x的平方根。
double pow(double x, double y):计算x的y次方。
double sin(double x):计算x的正弦值。
double cos(double x):计算x的余弦值。
double tan(double x):计算x的正切值。
double exp(double x):计算e的x次方。
double log(double x):计算x的自然对数。
double log10(double x):计算x的以10为底的对数。
以上是stdlib.h中常用的函数,还有一些其他函数没有列举出来,但这些函数已经能够满足大部分编程需求了。