C语言参考手册

转载 2011年09月22日 16:10:13

有人都说C比较难,我看不怎么难;可能就是C语言接触到的底层太多了,所以感到有点难了,但这也不是什么坏处,正是体现了C语言的优越之处:我们的权限更大,写出的程序在性能上更好!


由于这个原因,再加上自己也想有个总结性的C参考手册,原本打算自己根据C标准(C89、C99)整理一下C语言的,可谁知竟然发现这个工作早在27年前就有人已经做过了,而且做的特别好!这个人就是Samuel P. Harbison III!真让人汗颜!


《C语言参考手册(第五版)》(作者:Samuel P. Harbison III和Guy L. Steele Jr),有两个译本:一个是邱仲潘译的(2003年),一个是徐波译的(2008年)。这本书基本上可以取代现在任何一本C语言书(对于入门的人除外),甚至是可以取代C标准(C89、C95、C99)(这不是不需要C标准,而是你可以不用再看、查C标准)。该书中包括了传统C(C89以前的C)、C89、C95、C99,并介绍了C与C++的对接。


C语言的演变


传统C语言


最初的C语言描述出现在Brian Kernighan与Dennis Ritchie(通常合称为“K&R”,他们也是UNIX系统的创造者)的著作《The C Programming Language》第1版(Prentice-Hall, 1978)。此书出版后,这个语言不断有比细小的演变,增加或删除了一些我。我们把20世纪80年代初公认的C语言定义称为传统C语言,是标准化之前的方言。当然,各个C语言提供商也对传统C语言进行了各种扩展。


标准C语言(1989)


1982年,美国国家标准协会(ANSI)认识到标准化将有助于C语言在商业化编程中的普及,因此成立了一个委员会来为C语言及其运行库制定标准。这个委员会,即X3J11(现在为NCTTS  J11)的主席是Jim Brodie,它制定了一个标准并在1989年被正式采用,即美国国家标准X3.159-1989或称作“ANSI C”。


考虑到编程活动是国际化的,因此完成ANSI C语言之后,成立了一个国际标准化组织ISO/IEC  JTC1/SC22/WG14,在P.J Plauger(曾出版《C标准库》——是基于C89的,现为ISO C++标准委员会主席)的领导下,只作了少量编辑性修改,即把ANSI标准变成了国际标准ISO/IEC 9899:1990.此后,ISO/IEC标准被ANSI采用,人们把这个公共标准称为“标准C语言”。由于这个标准后来又有了变化,因此我们称为其为“标准C语言(1989)或简称”C89“。


传统C语言到C89的改变包括:


增加了真正的标准库

新的预处理器命令与特性

函数原型允许在函数声明中指定参数类型

一些新关键字,包括const、volatile与signed(注:一些国内教材(如谭浩强的《C程序设计》)讲解的语法大部分都是沿用传统C,对C标准的新特性提都没提)

宽字符、宽字符串和多字节字符

对约定规则、声明和类型检查的许多小改动与澄清


标准C语言(1995)


作为对C语言标准的正常维护工作,WG14对C89作了两处技术修订(缺陷修复)和一个补充(扩展)。总的来看,尤其是通过增加新的库函数,以上这些工作对C语言标准进行了相对合适的修改,得到的结果我们称之为“C89增补1”或“C95”。C95对C89所作的改变包括:


3个新的标准库头文件iso646.h、wctype.h与wchar.h

几个新的记号和宏,用于替换一些国家的字符集中没有的运算符和标点符号(这些在头文件iso646.h中定义)

printf/scanf系列函数的一些新格式代码

大量新函数和一些类型与常量,用于多字节字符和宽字符


标准C语言(1999)


ISO/IEC标准都需要经常进行审查和更新。1995年,WG14开始对C语言标准作更大的修订,最终于1999年完成并获批准。新标准ISO/IEC 9899:1990或“C99”取代原有的标准(及所有修订与补充),成为正式标准C语言。提供商根据新标准更新各自的C语言函数库和编译器。


C99在C89/C95语言和库函数中增加了许多新特性,包括:


复数运算

扩展整数类型,包括长标准类型(如long long int,  unsinged long long int,  long long double等等)

变长数组(在C89中,变长长度不支持变量;在C99获得允许)

布尔数组

布尔类型

对非英语字符集更好的支持

对浮点数类型更好的支持,包括所有类型的数学函数

C++风格的注释(//)


C99的改动比C95更大,包括语言的改变和函数库的扩展。C99标准文档比C89文档大得多(C89的中文版(GB/T 15272-94)有195页,C99英文版有540左右)。但是,改变还是“本着C语言精神”进行的,语言的基本性质没有改变。


C编译器的选择


有很多人推荐选择VC6.0,实在不明白他们推荐这款编译器有什么目的。本人不建议初学者用这款编译器,一个显著的理由是VC6.0已经开发10多年了,关键的是从那时到现在,微软一直没有更新这款编译器(好像已经放弃了它的开发),而是维护着VC2008。由于以上原因,VC6.0远远不支持C标准了,据有人测试,VC6.0对C++标准的支持最高才是70%,想想C++标准第一次发布是在1998年,而现在已经10多年过去了,VC6.0还能符合标准吗?一个重要的例子,就是for循环的作用域问题,VC6.0在设计时就是个缺陷。


如果还想用微软的产品,你可以使用VC2005或VC2008,据微软公布VC2008支持C++标准达到98%(不知是真是假)。


在这里笔者推荐你用GCC编译器,GCC是开源的、跨平台的,基本上在目前主流的平台上都能使用GCC;而且你也可以拿到GCC编译器的源代码。至于其他的理由,你可以上百度、谷歌上搜搜。


GCC编译器原本上是命令行界面的,如果在Windows下,可以使用DEV-C++,GCC编译在Windows下的图形化界面,而且小巧灵珑(只有9M左右),相比旁大的VC(VC2008有几个G),DEV-C++是你很好的选择。

Spring中文参考手册

Spring中文参考手册得到Spring Framework开发团队的直接授权和大力的支持,其目的是在中文世界推广优秀的开源技术。本次翻译活动由满江红开放技术研究组织(http://www.redsa...
  • zwhfyy
  • zwhfyy
  • 2006年10月14日 22:06
  • 3437

STM8L参考手册

STM8L参考手册!
  • huoxiaobo2010
  • huoxiaobo2010
  • 2012年11月30日 13:35
  • 780

EZ-USB® 技术参考手册

8.6.1.2 EP0BCH 和 EP0BCL These are the byte count registers for bytes sent as the optional data st...
  • dezhihuang
  • dezhihuang
  • 2017年06月29日 21:00
  • 327

Python参考手册

用于记录开始使用PYTHON编程的时候,用于方便记忆的“备忘录”,完整的参考手册,请参考Python的标准文档 https://www.python.org/doc/...
  • Jerry_1126
  • Jerry_1126
  • 2014年11月19日 06:49
  • 3067

C语言

定义  C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它...
  • turboc256
  • turboc256
  • 2009年07月25日 17:17
  • 729

AngularJS 参考手册

属性 描述 $dirty 表单有填写记录 $valid 字段内容合法的 $invalid 字段内容是非法的 $pristine 表单没有填写记录...
  • baby97
  • baby97
  • 2015年11月06日 10:34
  • 883

C#线程参考手册(多线程技术分析)

    这几天,花了些时间,浏览了下《C#线程参考手册》,对初学者比较有用。。。      该书可以在我CSDN下载频道获得,请购买原书支持正版(http://lzhdim.download.csdn...
  • lzhdim
  • lzhdim
  • 2010年01月03日 21:19
  • 1644

C/C++参考手册

1、此网站保护了所有c/c++函数、STL、技术文档、论坛等等 http://www.cplusplus.com/reference/clibrary/cstring/memcmp/   2.B...
  • user_920
  • user_920
  • 2012年08月28日 14:50
  • 777

《Java完全参考手册》总结(1)

《Java完全参考手册》的第一、二章的总结
  • Jack_Brilliant
  • Jack_Brilliant
  • 2016年04月09日 15:37
  • 1039

Microsoft Visual C++ 6.0 MFC类库参考手册

《Microsoft Visual C++ 6.0 MFC类库参考手册》介绍了类、全局函数、全局变量和宏,它们共同组成了Microsoft 基本类库 6.0版。类层次图表详细说明了类库中类之间的关系。...
  • ccrobot
  • ccrobot
  • 2011年02月04日 04:07
  • 612
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言参考手册
举报原因:
原因补充:

(最多只允许输入30个字)