1、为何要学习C标准库
一句话,太有用了。
C/C++广泛应用于各种开发环境中。而作为C的基础设施,C标准库提供了基础的功能函数、它们简洁又富于美感,熟练掌握它们可以让你在绝大部分(支持标准C)中完成所需的功能。虽说有很多其它的高级库可能提供更为完善的功能,但C的高可移植性及简洁高效对我们(尤其对于高手而言)仍相当具有一定的吸引力。此其一;
C从在UNIX时代诞生开始,经过长期演化、锤炼,在标准华的过程中的争论、权衡和取舍,为我们带来了丰富的背景知识及思想借鉴,也帮助我们更加理解C。又C标准库本身的设计实现,就是优秀的软件实践,是我们学习
的绝佳对象。此其二。
由于C的“中级“语言地位,就免不了涉及一些偏底层点的东西,比如信号,比如长跳转等等,这就作为学习了解操作系统知识(尤其是UNIX类系统)的自然入口,当你深入学习了解了这些,你就建立了扎实的编程内功基础,此时再去看、去学那些Java等高级语言,会有更加开阔的视角。此其三。
最后,C标准库是C语言的一部分。库都没掌握(至少也得90%吧),还敢自称精通C语言(简历上并不少见)?开个玩笑,哈哈。
2、库里有什么
C标准库中的函数基本上按照功能划分到不同的头文件中,每个头文件提供一组类似的功能,如string.h提供关于字符串操作相关函数。全体文件就不再一一列出了。
3、库的使用
1、哪些名字(标识符)不能用?
C标准库中保留了一些专用名字,用户代码不应使用。
a:凡是以下划线'_'开头的都别用(实际严格了一些,但这是一个安全合理的实践)
b:凡是标准库定义的的宏、结构体、全局变量、函数(及一些保留函数名)
2、宏还是函数?
C标准规定(为了效率)C库中任何一个函数实现都可能有一个宏版本,
例如 define abs(x) _BUILTIN_abs(x)
然而abs函数必然存在,若一定要用abs的函数版本,则可以通过(abs)(x)来访问。因为()强制排除了宏扩展的可能。