七、功能函数(<stdlib.h>)随机数函数:
函数原型 | 意义解释 | int rand(void)
| 生成一个0到RAND_MAX的随机整数
| void srand(unsigned seed)
| 用seed为随后的随机数生成设置种子值
| 动态存储分配函数:
函数原型 | 意义解释 | void *calloc(size_t n, size_t size)
| 分配一块存储,其中足以存放n个大小为size的对象,并将所有字节用0字符填充。返回该存储块的地址。不能满足时返回NULL
| void *malloc(size_t size)
| 分配一块足以存放大小为size的存储,返回该存储块的地址,不能满足时返回NULL
| void *realloc(void *p, size_t size)
| 将p所指存储块调整为大小size,返回新块的地址。如能满足要求,新块的内容与原块一致;不能满足要求时返回NULL,此时原块不变
| void free(void *p)
| 释放以前分配的动态存储块
| 几个整数函数 几个简单的整数函数见下表,div_t和ldiv_t是两个预定义结构类型,用于存放整除时得到的商和余数。div_t类型的成分是int类型的quot和rem,ldiv_t类型的成分是long类型的quot和rem。
函数原型 | 意义解释 | int abs(int n)
| 求整数的绝对值
| long labs(long n)
| 求长整数的绝对值
| div_t div(int n, int m)
| 求n/m,商和余数分别存放到结果结构的对应成员里
| ldiv_t ldiv(long n, long m)
| 同上,参数为长整数
| 数值转换
函数原型 | 意义解释 | double atof(const char *s)
| 由串s构造一个双精度值
| int atoi(const char *s)
| 由串s构造一个整数值
| long atol(const char *s)
| 由串s构造一个长整数值
| 执行控制1)非正常终止函数abort。
原型是:void abort(void);
2)正常终止函数exit。
原型是:void exit(int status);
导致程序按正常方式立即终止。status作为送给执行环境的出口值,0表示成功结束,两个可用的常数为EXIT_SUCCESS,EXIT_FAILURE。
3)正常终止注册函数atexit。
原型是:int atexit(void (*fcn)(void))
可用本函数把一些函数注册为结束动作。被注册函数应当是无参无返回值的函数。注册正常完成时atexit返回值0,否则返回非零值。
与执行环境交互
1)向执行环境传送命令的函数system。
原型是:int system(const char *s);
把串s传递给程序的执行环境要求作为系统命令执行。如以NULL为参数调用,函数返回非0表示环境里有命令解释器。如果s不是NULL,返回值由实现确定。
2)访问执行环境的函数getenv。
原型是:char *getenv(const char *s);
从执行环境中取回与字符串s相关联的环境串。如果找不到就返回NULL。本函数的具体结果由实现确定。在许多执行环境里,可以用这个函数去查看“环境变量”的值。
常用函数bsearch和qsort1)二分法查找函数bsearch:
void *bsearch(const void *key, const void *base,size_t n, size_t size,int (*cmp)(const void *keyval, const void *datum));
函数指针参数cmp的实参应是一个与字符串比较函数strcmp类似的函数,确定排序的顺序,当第一个参数keyval比第二个参数datum大、相等或小时分别返回正、零或负值。
2)快速排序函数qsort:
void qsort(void *base, size_t n, size_t size,int (*cmp)(const void *, const void *));
qsort对于比较函数cmp的要求与bsearch一样。设有数组base[0],...,base[n-1],元素大小为size。用qsort可以把这个数组的元素按cmp确定的上升顺序重新排列。 |