gpt4 book ai didi

c - 函数参数的副作用

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:48 24 4
gpt4 key购买 nike

这是一个在函数参数中使用副作用的递归代码。在 K&R 中,我找到了一个语句说 C 标准指定参数的所有副作用在调用函数之前生效(第 54 页 K&R 第二版)。但是上面代码的输出是矛盾的。谁能帮我解决。

void reverse(int* array,int i,int j)
{
`int temp;
if(i>j)

return ;
else{
temp=array[i];
array[i]=array[j];
array[j]=temp;
//i++;
//j--;
reverse(array,i++,j--);
}
} '

PS:输出是段错误

最佳答案

的确,变量在函数调用之前递增,但这些变量对于声明它们的函数而言是局部的(在本例中,一个递归函数调用框架),并且当您使用后缀运算符时,运算符返回的值不是更新后的值,而是初始值。因此,您最终作为参数传递的值没有正确更新,您的函数将永远不会终止。为了增加变量并同时返回和传入更新的值,您必须使用前缀运算符,即 ++i++j

关于c - 函数参数的副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10876174/

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