c++ - 在变量的范围和复制方面,这段代码有什么问题吗?
问题描述
我刚刚做了下面的功能
static int sumRange(int from, const int& to);
int Utility::sumRange(int from, const int& to)
{
int sum = 0;
while (from < to)
{
sum =+ from;
++from;
}
return sum;
}
int sum = Utility::sumRange(5,10);
一些问题:
我想可能是因为在 sumRange 中我返回了局部变量 sum,这可能很糟糕,因为它在函数末尾被删除并返回给调用函数。但似乎这些变量有不同的地址。我弄错了吗,在这种情况下,c++ 会复制变量吗?
我可以修改变量吗?我认为已经制作了一个副本,我可以修改它,这与“to”不同,我通过引用传递以避免不必要的复制并制作 const 以防止编辑。
解决方案
我想这可能是因为在 sumRange 我返回了局部变量 sum 这可能是坏的
这是完全安全的。另一方面,试图返回一个引用或一个指向局部变量的指针将是一个问题。
我可以修改变量吗?我想复制一份,我可以修改这个
好的,可以。确实复制了。
但!
这条线没有做你认为它做的事情:
sum =+ from;
它的意思sum = +from;
是,与 相同sum = from;
。
你可能想要:
sum += from;
推荐阅读
- r - 闪亮的模块:从外部访问和更改位于模块服务器功能内的反应值?
- compilation - 查找用于 macOS 的预编译或编译 Tcl/Tk 框架
- c# - 更新属性以使加载不会停止 UI 的正确方法?
- azure - 无法从 Azure 容器实例连接到 Azure SQL 数据库
- python - 我如何使用scrapy shell和python登录这个网站 - 401错误?
- c++ - 如何在 C++ 中循环对
- java - Spring Boot 使用多个对象上传多个文件
- android - 从本地数据库Android检索数据的正确方法是什么?
- ios - 反向地理编码解释
- javascript - 从网页中读取动态创建的内容