- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。 对结构体的增强 在日常的编程中,
您可能关注的文档
- 2016年公开课树立正确的消费观程序.ppt
- bx发动机原理排放程序.ppt
- 2012年最新《党政机关公文格式》程序.ppt
- 2016年湖南省高考历史复习策略及应试规律程序.ppt
- 2012人教版七年级英语上Unit_7How_much_are_these_socks复习程序.ppt
- B第3章word2003幻灯片程序.ppt
- 2012说课G90指令(完成)程序.ppt
- 2016年扩展压缩语段【刘希国】程序.ppt
- B样条基础程序.ppt
- c_chapter1程序.ppt
- 300516_2024_#ESG_久之洋_2024年环境、社会及公司治理(ESG)报告_2025-03-28.pdf
- 301508_2024_#ESG_中机认检_中机寰宇认证检验股份有限公司2024年度环境、社会和公司治理(ESG)报告_2025-04-21.pdf
- 300693_2024_#ESG_盛弘股份_2024年环境、社会、公司治理(ESG)报告_2025-04-03.pdf
- 300339_2024_#ESG_润和软件_2024年度环境、社会和公司治理(ESG)报告_2025-04-22.pdf
- 300376_2024_#ESG#SD_ST易事特_2024年度可持续发展暨ESG报告_2025-04-29.pdf
- 300834_2024_#ESG_星辉环材_2024年度环境、社会及治理(ESG)报告_2025-04-29.pdf
- 301115_2024_#ESG_联检科技_2024年度环境、社会和治理(ESG)报告_2025-04-29.pdf
- 300308_2024_#ESG_中际旭创_2024年环境、社会及公司治理(ESG)报告_2025-04-21.pdf
- 想生科技产品注册公告及所需文件상생기술제품_등록_공고문_및_제출_서류.pdf
- 300760_2024_#SD_迈瑞医疗_2024年度可持续发展报告_2025-04-29.pdf
文档评论(0)