限定指针被解释为具有规则:只有通过指针访问并在任何地方修改的对象才能仅由该指针访问。所以下面的代码不起作用,对吗?
void agSum( int * restrict x, int n ){
for(int i=0; i<n-1; i++) x[i+1] += x[i];
}
int SumAndFree( int * restrict y, int n ){
agSum(y);
printf("%i",y[n-1]);
free(y);
}
因此,我猜测这是无效的,因为y[n-1]在某处被修改,而不是直接从限定指针y访问,并且它被y读取。
如果这是正确的,那么当输入指针限定为restrict时,你如何调用函数呢?似乎函数无法做任何事情而不违反restrict规则。
释放限定指针是另一种违规行为吗?我想这有点像修改。
提前致谢!