c++ - 在 C++ 中使用别名而不改变原始变量的值?

标签 c++ pointers reference alias

所以我必须编写一个程序,计算数组中某些元素的总和,然后求出总和的位数(例如,如果几个元素的总和为 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/

相关文章:

c - fgets 设置为 char * 导致段错误,动态字符串

c - 将地址传递给指针是否会导致类型提升

c++ - 具有无效值的初始化引用

c++ - 保存邮件正文的 MAPI 属性是什么

c++ - 如何在 CMake 中以可移植的方式获取 libstdcxx 隐式链接目录

c++ - 启用矢量化后结果(略有)不同

c变量分配内存,指针

常量变量的 C++ 模板特化

java - Java 中 Integer 对象的比较运算符的安全性

perl - 在 Perl 中 typeglobs 可以作为引用的原因