在C ++的递归函数中,它的一个参数是引用类型。我只是想知道在函数的递归调用期间会发生什么。
没有引用类型,我相信每次递归调用函数时,都会在堆栈中创建一个新变量。所以有了引用,每次在堆栈中创建的东西都是指向声明它的原始变量地址的某种指针,对吗?
因此,通过在这种情况下使用引用,我相信有时我们可以节省一些内存。
答案 0 :(得分:1)
通常参数值在递归期间会发生变化。你不能简单地分享所有级别的那些。
此外,当函数没有内联(并且递归干扰内联)时,通过引用传递参数会花费与指针一样多的空间。
答案 1 :(得分:0)
是的,你有正确的想法。当然,请注意,如果参数类型大于指针,则只保存内存。对整数(或者甚至是双精度)的引用不会保存堆栈中的任何内存。