gpt4 book ai didi

c - 将限制合格的指针传递给函数?

转载 作者:行者123 更新时间:2023-12-05 01:26:57 25 4
gpt4 key购买 nike

我向我解释了限制限定指针有一条规则:指针访问的任何对象和在任何地方修改的对象只能由指针访问。那么下面的方法是行不通的,对吧?

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 限定时,如何调用函数?似乎该函数在不违反限制规则的情况下无法执行任何操作。

释放限制指针是不是又一次违规?我猜这是一种修改。

提前致谢!

最佳答案

您的代码是正确的。当 SumAndFree 调用 agSum 时,它会传递一个派生自 y 的指针。因此,SumAndFree block 下的所有访问都是使用从 y 派生的指针完成的。

也可以调用free

除了 xy 之外,您的函数不执行任何读取或写入操作,因此 restrict 实际上在这种情况下没有任何作用.

关于c - 将限制合格的指针传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36323156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com