函数c语言编程教学 c语言函数式编程( 五 )


增加和修改了一些标准头文件, 比如定义 bool 的 stdbool.h 定义一些标准长度的 int 的 inttypes.h 定义复数的 complex.h 定义宽字符的 wctype.h 有点泛型味道的数学函数 tgmath.h 跟浮点数有关的 fenv.h 。stdarg.h 里多了一个 va_copy 可以复制 ... 的参数 。time.h 里多了个 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_t size);
如果s1和s2所指向的对象重叠,其操作就是未定义的 。memcpy()函数只能用于不重叠的对象 。C99中memcpy()函数原型如下:代码: void *memcpy(void *restrict s1, const void *restrict s2,size_t size);
通过使用restrict修饰s1和s2 变元 , 可确保它们在该原型中指向不同的对象 。
2、inline(内联)关键字
内联函数除了保持结构化和函数式的定义方式外,还能使程序员写出高效率的代码.函数的每次调用与返回都会消耗相当大的系统资源,尤其是当函数调用发生在重复次数很多的循环语句中时.一般情况下,当发生一次函数调用时,变元需要进栈,各种寄存器内存需要保存.当函数返回时,寄存器的内容需要恢复 。如果该函数在代码内进行联机扩展,当代码执行时,这些保存和恢复操作旅游活动会再发生 , 而且函数调用的执行速度也会大大加快 。函数的联机扩展会产生较长的代码,所以只应该内联对应用程序性能有显著影响的函数以及长度较短的函数
3、新增数据类型
_Bool
值是0或1 。C99中增加了用来定义bool、true以及false宏的头文件夹stdbool.h,以便程序员能够编写同时兼容于C与C++的应用程序 。在编写新的应用程序时,应该使用
stdbool.h头文件中的bool宏 。
_Complex and _Imaginary
C99标准中定义的复数类型如下:float_Complex; float_Imaginary; double_Complex; double_Imaginary; long double_Complex; long double_Imaginary.
complex.h头文件中定义了complex和imaginary宏,并将它们扩展为_Complex和_Imaginary,因此在编写新的应用程序时,应该使用stdbool.h头文件中的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中,程序员声明数组时,数组的维数可以由任一有效的整型表达式确定,包括只在运行时才能确定其值的表达式,这类数组就叫做可变长数组,但是只有局部数组才可以是变长的.
可变长数组的维数在数组生存期内是不变的,也就是说,可变长数组不是动态的.可以变化的只是数组的大小.可以使用*来定义不确定长的可变长数组 。
C语言教程的内容是?C语言学习从入门到精通的一套经典视频教程,本课程通过高清晰的视频、概念详解、实例精讲、习题测试让你很快的掌握C语言的相关知识,并领略运用到实例中去 。在针对一些用户认为C语言比较难学的情况下,本课程从初中级用户的角度出发 , 进行合理的内容安排,突出学、练、用、巩固相结合的特点,以通俗易懂的语言,丰富多彩的实例,详细介绍了使用C语言进行程序开发应该掌握的各方面知识 。本课程主要给大家讲解了C语言概述 , 算法 , 数据类型 , 运算符与表达式 , 常用的数据输入、输出函数 , 选择结构程序设计,循环控制,数组,函数,指针,结构体和共用体 , 位运算,预处理,模块化编程,编程规范,C语言常见问题及分析,习题测试等内容 。所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的讲解,可以使读者轻松领会C语言程序开发的精髓,快速提高开发技能 。

推荐阅读