标准函数库
算术
求商和余数的函数div
。
字符串转换
函数atoi
和atol
执行基数为10的转换;
而函数strtol
和strtoul
允许你在转化时指定基数,同时还允许访问字符串的剩余部分。
浮点表示形式
函数modf
把一个浮点值分成整数和小数两个部分。
非本地跳转
setjmp
和longjmp
函数提供了一种类似goto
语句的机制,但它并不局限于一个函数的作用域之内。这些函数常用于深层嵌套的函数调用链。
信号
信号表示一种事件,它可能异步地发生,也就是并不予程序执行过程的任何时间同步。
信号处理函数
由于信号可能在任何时候发生,所以由信号处理函数修改的变量的值可能会在任何时候发生改变。因此,我们不能指望这些变量在两条相邻的程序语句中肯定具有相同的值。volatile
关键字告诉编译器这个事实,防止它以一种可能修改程序含义的方式“优化”程序。
通常情况下,上面的程序会认为第二个测试和第一个测试具有相同的结果
而如果把变量value声明为volatile
类型的,就不会进行此类优化。
有时,如果不用volatile
修饰符,可能无法编写多线程程序,要么编译器失去大量优化的机会。
终止执行
abort
函数用于不正常地终止一个正在执行的程序;atexit
函数可以把一些函数注册为退出函数exit function;exit
函数用于正常终止程序;
断言
宏assert(test)
用于检测test是否为真。用这种方法可以使调试变得更容易。并且我们可以在头文件assert.h
被包含之前,添加#define NDEBUG
皆可以禁用所有的断言。
总结
frexp
和ldexp
函数在创建与机器无关的浮点数表示形式方面是很有用的。frexp
函数用于计算一个给定值的表示形式;ldexp
函数用于解释一个表示形式,恢复它的原先值;qsort
函数把一个数组中的值按照升序进行排序;bsearch
函数用于在一个已经排好序的数组中用二分法查找一个特定的值;locale
就是一组函数,根据世界各国的约定差异对C程序的行为进行调整;- 使用
setjmp
和longjmp
可能导致晦涩难懂的代码; - 使用断言可以简化程序的调试;