C89C99简介程序.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C89与C99 软1112班 梁诚伟 C语言之父--丹尼斯·里奇(1941.9.9~2011.10.12) C语言是1972年设计发明的,并首次在UNIX操作系统的DEC PDP-11计算机上使用。它由早期的编程语言BCPL发展演变而来,在1970年,ATT贝尔实验室的Ken Thompson根据BCPL语言设计出较先进的并取名为B的语言,最后导致了C语言的问世。 而B语言之前还有A语言,取名自世界上第一位女程序员Ada(艾达)。 C语言的起源! 1972 1973 1978 1989 1999 2011 C语言设计发明 Dennis Ritchie 《The C Programming Language》 KR C ISO 9899:1999 C99 Unix操作系统的核心正式用C语言改写 C语言第一次应用在操作系统的核心编写 ANSI X3.159-1989 C89/C90 ISO/IEC 9899:2011 C11 C语言发展时间轴 第二版引入了部分ANSI C 的标准 1978年,Dennis M.Ritchie 和Brian W.Kernighan合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程序员称作“KR C”,第二版的书中也包含了一些ANSI C的标准。即使在后来ANSI C标准被提出的许多年后,KR C仍然是许多编译器的最低标准要求,许多老旧的编译仍然运行KR C的标准。 KR C 1989年,C语言被 美国国家标准局ANSI 标准化(ANSI X3.159-1989)。标准化的一个目的是扩展KR C。这个标准包括了一些新特性。在KR出版后,一些新特性被非官方地加到C语言中。 在ANSI标准化自己的过程中,一些新的特性被加了进去。ANSI也规定了一套标准函数库.ISO(国际标准化组织)成立 ISO/IEC JTC1/SC22/WG14 工作组,来规定国际标准的C语言。通过对ANSI标准的少量修改,最终通过了 ISO 9899:1990。 ANSI C 和 ISO C C89/C90标准的指导原则是: 1、相信程序员; 2、不妨碍程序员做需要完成的事情; 3、让语言保持短小简单; 4、只提供一种方法来执行一种操作; 5、使程序运行速度快,即使不能保证其可移植性。(不追求定义的抽象统一,更优先考虑运行效率) C99的修订目标主要有三点: 1、支持国际化编程,引入了支持国际字符集Unicode的数据类型和库函数; 2、修正原有版本的明显缺点。如整数的移植方法,例如int8_t、int16_t、int32_t和int64_t等类型; 3、针对科学和工程的需要,改进计算的实用性。例如添加了复数类型和新数学函数。 C89 与 C99 增加restrict指针   C99中增加了供适用于指针的restrict类型修饰符,它是初始访问指针所指对象的唯一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针主要用做函数变量,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的语义。 C89中memcpy()函数原型如下: 代码:   void *memcpy (void *s1, const void *s2, size_t size); 如果s1和s2所指向的对象重叠,其操作就是未定义的。memcpy()函数只能用于不重叠的对象。 C99中memcpy()函数原型如下: 代码:     void *memcpy(void *restrict s1, const void *restrict s2,size_t size); 为编译器优化 int ar[10]; int * restrict restar = (int *) malloc(10 * sizeof(int)); int * par = ar; for (n = 0; n 10; n++) { par[n] += 5; restar[n] += 5; ar[n] *= 2; par[n] += 3; restar[n] += 3; } restar[n]+=8;//对 par[n]+=8; // 错 柔性数组结构成员   C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其他成员。柔性数组成员允许结构中包含一个大小可变的数组。sizeof返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。 对结构体的增强 在日常的编程中,

文档评论(0)

希望之星 + 关注
实名认证
文档贡献者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档