c99标准的新特性.docC99标准的新特性Duanchangzhi2010-6-:OldStyleC、•样,但为了向后兼容性(patibility),,于1989年提出,1990年先由ANSI(美国国家标准委员会,AmericanNationalStandardsInstitute)推出ANSI版本,后来被接纳为ISO国际标准(ISO/IEC9899:1990),因而有时也称为C90,最经典的C语言教材[K&R]就是基于这个版本的,C89是目前最广泛采用的C话言标准,(ISO/IEC9899:1999)是在1999年推出的,加入了许多新的特性,但目前仍没有得到广泛支持,在C99推出之后相当长的一段时间里,、增加restrict指针C99中增加了适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟•途径,因此只有借助restrict指针表达式才能访问对象restrict指针主要用做函数形参,或者指向由malloc(),编译程序就假定它们指向两个不同的对象,memcpy():void*memcpy(void*s1,constvoid*s2,size_tsize);如果s1和s2所指向的对象重叠,():void*memcpy(void*restricts1,constvoid*restricts2,size_tsize);通过使用restrict修饰s1和s2参数,可确保它们在该原型中指向不同的对象2、inline(内联)关键字内联函数除了保持结构化和函数式的定义方式外,,,半发生一次函数调用时,函数与参数需要进栈,,寄存器的内容需要恢复,如果该函数在代码内进行内联扩展,当代码执行时•,这些保存和恢复操作不会再发生,因为没有函数的进栈与退栈了「而且函数调用的执行速度也会大大加快,函数的内联扩展会产生较长的代码,所以只应该内联对应用程序性能有显著影响的函数以及长度较短的函数,、 新增数据类型_Bool值是0或1,C99中增加了用来定义bool、>,以便程序员能够编写同时兼容于C与C++的应用程序,在编写新的应用程序时,>:plex;float_lmaginary;plex;double_lmaginary;plex;longdouble_lmaginary.<>plex和imaginary宏,plex和_lmaginary,因此左编写新的应用程序时,>(-(2e63-1)至2e63-1)和unsignedlonglongint(O-2e64-1),、 对数组的增强可变长数组(VLA)C99中,程序员声明数组时,数组的维数可以由任一•有效的整型表达式确定,包括只在运行时•才能确定其值的表达式,,也就是说,可变长数组不是动态的•*,仿佛调用了alloca函数。无论其作用域如何,其生存期与通过调用alloca在栈中分配数据时相同;直到函数返回时为止。如果在其中分配VLA的函数返回时释放栈,则释放分配的空间。实例如下:#include<>voidfoo(int);intmain(void)foo(4);return(O);}voidfoo(intn){inti;inta[n];fo
c99标准的新特性 来自淘豆网m.daumloan.com转载请标明出处.