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标准的新增特性,包括restrict指针、inline内联关键字、新增数据类型如_Bool和复数类型、可变长数组、内联函数优化性能、单行注释、预处理程序修改等。C99还增强了数组声明、for循环内的变量声明、复合赋值等功能,并引入了新的库和头文件,如<complex.h>和<stdbool.h>,以支持复数运算和布尔类型。文章最后提到了一些其他改动,如放宽的转换限制和对返回值的约束。
订阅专栏 解锁全文
2271

被折叠的 条评论
为什么被折叠?



