gpt4 book ai didi

c - 返回函数本身作为返回值

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

我有一个关于返回函数本身值的简单问题。该函数当然是递归的。例如:

int CountDigs(int n)
{
int dig=n%10;
if(n < 10) return 0;
if( (n/10)%10 > dig )
return CountDigs(n/10)+1;
return CountDigs(n/10);
}

我通常返回一个数字或一个变量,所以这是我第一次看到这个。有人可以解释一下“+1”的值存储在内存中的什么位置,为什么我不应该创建一个存储摘要的变量?

更具体地说,我对相同的解决方案感到愤怒,但有所不同:

int counting_function(int n)
{
int sum;
if (n>=9)
return 0;
sum = counting_function (n/10);
if (n%10 < n/10%10)
{
sum++;
return sum;
}
return sum;
}

最佳答案

return 语句返回一个值时,该值由表达式指定。该表达式可以是一个简单的表达式,例如常量或变量名,但不一定是。它可以是任何合适类型的有效表达式。

Someone can please explain where the value of "+1" stores at the memory,

这取决于编译器,但加 1 的结果可能不会存储在系统内存中。更有可能的是,它永远不会离开 CPU。

and why shouldn't I create a variable that stores the summary?

将结果存储在变量中,然后使用变量的名称作为 return 表达式,本质上并没有错。在某些情况下,这可能更清楚。然而,即便如此,该值也可能不会实际存储到系统内存中。但是,如果它 存储到系统内存中,那么这将比不存储更耗时。

这里要理解的关键是 return 语句指定一个 value 直接返回,而不是间接返回。在大多数情况下,对于大多数编译器,这样的返回值是通过 CPU 寄存器而不是系统内存传递给调用者的,尤其是您表示熟悉的情况。

关于c - 返回函数本身作为返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48624561/

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