我终于对某些C99功能感兴趣,现在我无法理解C99草案的相关部分。
我知道限制是一个承诺,两个限制合格的指针不会指向同一个对象,但我寻求更加详细和具体的解释什么是允许的和不允许的几乎没有。
所以我的问题是: 有人可以提供关于限制指针的详细信息的可读,可理解的解释,例如:当我可以而且不能使用它们时,它的UB等等。越详细越好。我厌倦了看着C99选秀让我头疼。
感谢。
答案 0 :(得分:0)
以下摘录自: http://en.wikipedia.org/wiki/Restrict
关于'限制'改性剂
"在C编程语言中,从C99标准开始,restrict是一个可用于指针声明的关键字。 restrict关键字是程序员给编译器的意图声明。它表示在指针的生命周期中,只有它或直接从它派生的值(例如指针+ 1)才能用于访问它指向的对象。这限制了指针别名的效果,有助于优化。如果未遵循意图声明并且该对象由独立指针访问,则将导致未定义的行为。原则上,在C中使用restrict关键字允许非钝C实现与Fortran中编写的相同程序相同的性能。[1]"