所以我必须编写一个程序,计算数组中某些元素的总和,然后求出总和的位数(例如,如果几个元素的总和为 175,我必须打印总和 (175) 和 175 (3) 的位数。
要确定位数,我使用以下“while”循环:
while (sum > 0)
{
sum /= 10;
digits++;
}
您可能已经注意到,在循环结束时总和为 0。所以我想创建一个“总和”的别名:
int& rSum = sum;
所以我只是简单地将数组中的“sum”替换为“rSum”,以便找到位数,并在程序末尾打印 sum。无论如何,循环后“sum”的值为0,换句话说等于“rSum”。所以我想,当您为某个变量创建别名时,修改别名会修改变量本身,这在我的案例中是个问题。
我的问题是,我可以使用别名(或使用引用、指针等)创建程序,还是创建“sum”变量拷贝的唯一方法 (int rSum = sum;
)?
最佳答案
您的问题看起来像“如何在不复制此变量的情况下复制此变量?”。
我认为您的担忧根源低一级,您认为制作拷贝会降低代码的可读性 - 我同意。但是你可以非常简单地对抗它:
int sum = ...;
int digits = countDigits(sum);
将 countDigits
提取到一个单独的函数中仍然会复制您的 sum
变量,因为它是按值复制的(这没问题),但是这个拷贝将是临时的(局部于 countDigits
)并且不会在您的原始函数中造成不必要的困惑。
关于c++ - 在 C++ 中使用别名而不改变原始变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26947235/