电脑教程《c语言》_第1页
电脑教程《c语言》_第2页
电脑教程《c语言》_第3页
电脑教程《c语言》_第4页
电脑教程《c语言》_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c 语言C 语言是一种计算机程序设计语言 。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的 D.M.Ritchie 于 1972 年推出。1978 后,C 语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到 C 语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。模块化程序结构展开编辑本段历史C 语言的祖先是 BCPL 语言。 1967 年,剑桥大学的 Martin Richards 对 CPL 语言进行了简化,于是产生了BCPL( Basic Combined Programming Language)语言。 1970 年,美国贝尔实验室的 Ken Thompson。以 BCPL 语言为基础,设计出很简单且很接近硬件的 B 语言(取 BCPL 的首字母) 。并且他用 B 语言写了第一个 UNIX 操作系统。在 1972 年,美国贝尔实验室的 D.M.Ritchie 在 B 语言的基础上最终设计出了一种新的语言,他取了 BCPL 的第二个字母作为这种语言的名字,这就是 C 语言。 为了使 UNIX 操作系统推广,1977 年 Dennis M.Ritchie 发表了不依赖于具体机器系统的 C 语言编译文本可移植的 C 语言编译程序 。 1978 年由美国电话电报公司(AT 的执行顺序是 1-2-1.循环,2 为循环条件 while:while 循环结构,while(1) 2; 的执行顺序是 1-2-1.循环,1 为循环条件 以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。编辑本段经典错误void main()的用法并不是任何标准制定的,是 Microsoft 制定的。大部分编译器不支持这种写法。C 语言正确的语法是 int main(void)。 在 C+ 标准中,虽然 main 的标准型态应是 int,但编译器实现中也可以自行定义型态,不过,所有实现均应接受 int main(void)的。如果坚持使用 void main()会使 C 程序失去跨平台的移植特性。 编辑本段开发环境常用的 C 语言 IDE(集成开发环境)有 Microsoft Visual C+,Dev-C+,Code:Blocks, Borland C+,Watcom C+,Borland C+ Builder,GNU DJGPP C+,Lccwin32 C Compiler 3.1,High C, Turbo C,C-Free,win-tc, xcode(mac os x)等。 对于一个初学者, Microsoft Visual C+是一个比较好的软件。界面友好,功能强大,调试也很方便。这是微软出的一个 C 语言集成开发环境(IDE) ,主要有:VC+6.0、VS2005VS2008VS2010 等,分为企业版和学生版等。对于初学者 VC+6.0是比较容易上手的,但其对标准支持的不好可能使人养成不良的编程习惯。 在 unix/linux 操作系统上,学习 c 语言一般使用 vim/emacs 来编辑源文件,使用 gcc 来编译源文件,使用 make 程序来管理编译过程。 其他编译器如 CodeBlocks10.05(跨平台 linux/windows 开源免费支持高达 29 种不同的项目) 、dev-c+ (开源免费) 、turbo、c-free5.0 、codelite(开源免费) 、eclipse(开源免费基于 Java 扩展平台) 编辑本段新标在 ANSI 标准化后,C 语言的标准在一段相当的时间内都保持不变,尽管 C 继续在改进。 (实际上,NormativeAmendment1 在 1995 年已经开发了一个新的 C 语言版本。但是这个版本很少为人所知。 )标准在 90 年代才经历了改进,这就是 ISO9899:1999(1999 年出版)。这个版本就是通常提及的 C99。它被 ANSI 于 2000 年 3 月采用。 在 C99 中包括的特性对编译器限制增加了,比如源程序每行要求至少支持到 4095 字节,变量名函数名的要求支持到 63 字节 (extern 要求支持到 31) 预处理增强了。例如: 宏支持取参数 #defineMacro(.) _VA_ARGS_ 使用宏的时候,参数如果不写,宏里用#,# 这样的东西会扩展成空串。 (以前会出错的) 支持/ 行注释(这个特性实际上在 C89 的很多编译器上已经被支持了) 增加了新关键字 restrict, inline,_Complex, _Imaginary,_Bool 支持 long long, long double _Complex, float _Complex 这样的类型 支持 %: %:%: ,等等奇怪的符号替代 支持了不定长的数组。数组的长度就可以用变量了。声明类型的时候呢,就用 int a* 这样的写法。不过考虑到效率和实现,这玩意并不是一个新类型。所以就不能用在全局里,或者 struct union 里面,如果你用了这样的东西,goto 语句就受限制了。 变量声明不必放在语句块的开头,for 语句提倡这么写 for(int i=0;i 定义一些标准长度的 int 的 定义复数的 定义宽字符的有点泛型味道的数学函数 跟浮点数有关的。里多了一个 va_copy 可以复制。. 的参数。 里多了个 struct tmx 对 struct tm 做了扩展 输入输出对宽字符还有长整数等做了相应的支持 相对于 c89 的变化1增加 restrict 指针 C99 中增加了公适用于指针的 restrict 类型修饰符,它是初始访问指针所指对象的唯一途径,因此只有借助 restrict 指针表达式才能访问对象。restrict 指针指针主要用做函数变元,或者指向由 malloc()函数所分配的 内存变量。restrict 数据类型不改变程序的语义。 如果某个函数定义了两个 restrict 指针变元,编译程序 就假定它们指向两个不同的对象,memcpy()函数就是 restrict 指针的一个典型应用示例。C89 中 memcpy()函数原型如下: 代码: void *memcpy (void *s1, const void *s2,size_tsize); 如果 s1 和 s2 所指向的对象重叠,其操作就是未定义的。memcpy()函数只能用于不重叠的对象。C99 中 memcpy()函数原型如下:代码:void *memcpy(void *restrict s1, const void *restrict s2,size_t size); 通过使用 restrict 修饰 s1 和 s2 变元,可确保它们在该原型中指向不同的对象。 2inline (内联)关键字 内联函数除了保持结构化和函数式的定义方式外,还能使程序员写出高效率的代码。函数的每次调用与返回都会消耗相当大的系统资源,尤其是当函数调用发生在重复次数很多的循环语句中时.一般情况下,当发生一次函数调用时,变元需要进栈,各种寄存器内存需要保存。当函数返回时,寄存器的内容需要恢复。如果该函数在代码内进行联机扩展,当代码执行时,这些保存和恢复操作旅游活动会再发生,而且函数调用的执行速度也会大大加快。函数的联机扩展会产生较长的代码,所以只应该内联对应用程序性能有显著影响的函数以及长度较短的函数 3新增数据类型 _Bool 值是 0 或 1。C99 中增加了用来定义 bool、true 以及 false 宏的头文件夹,以便程序员能够编写同时兼容于 C 与 C+的应用程序。在编写新的应用程序时,应该使用 头文件中的 bool 宏。 _Complex and _Imaginary C99 标准中定义的复数类型如下: float_Complex; float_Imaginary; double_Complex; double_Imaginary; long double_Complex; long double_Imaginary. 头文件中定义了 complex 和 imaginary 宏,并将它们扩展为 _Complex 和_Imaginary,因此在编写新的应用程序时,应该使用头文件中的 complex 和imaginary 宏。 long long int C99 标准中引进了 long long int(-(2e63 - 1)至 2e63 - 1)和 unsigned long long int(0 - 2e64 - 1) 。long long int 能够支持的整数长度为 64 位。 4对数组的增强 可变长数组 C99 中,程序员声明数组时,数组的维数可以由任一有效的整型表达式确定,包括只在运行时才能确定其值的表达式,这类数组就叫做可变长数组,但是只有局部数组才可以是变长的。 可变长数组的维数在数组生存期内是不变的,也就是说,可变长数组不是动态的。可以变化的只是数组的大小。可以使用*来定义不确定长的可变长数组。 数组声明中的类型修饰符 在 C99 中,如果需要使用数组作为函数变元,可以在数组声明的方括号内使用 static关键字,这相当于告诉编译程序,变元所指向的数组将至少包含指定的元素个数。也可以在数组声明的方括号内使用 restrict,volatile,const 关键字,但只用于函数变元。如果使用restrict,指针是初始访问该对象的唯一途径。如果使用 const,指针始终指向同一个数组。使用 volatile 没有任何意义。 5单行注释 引入了单行注释标记“/“ ,可以象 C+一样使用这种注释了。 6分散代码与声明 7预处理程序的修改 a、变元列表 宏可以带变元,在宏定义中用省略号(。.)表示。内部预处理标识符_VA_ARGS_决定变元将在何处得到替换。例:#define MySum(.) sum(_VA_ARGS_) 语句MySum(k,m,n); 将被转换成:sum(k, m, n); 变元还可以包含变元。例:#define compare(compf,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论