c++ - 在函数范围之外持久化变量
问题描述
这是我几天来一直坚持的调试任务的一部分。我不是在寻找答案,而是在寻找在哪里寻找答案。
我有一个将 int 作为参数的函数,并且测试使用该函数来计算范围 (0,n] 的总和。我的问题是我是 C++ 新手并且已经用尽了我的知识在哪里寻找解决这个问题。任何帮助将不胜感激。
另外,不用说我不能修改测试文件。
头文件.h
bool getNum(int n);
标头.cpp:
bool getNum(int n)
{
n = n + 1;
if (n < 10)
{
return true;
}
else
{
return false;
}
}
测试.cpp
int n = 0;
int sum = 0;
while (getNum(n) && n)
{
sum += n;
}
CHECK(sum == 45);
我的问题是我无法n
通过true
逻辑 &&,所以测试永远不会访问while
循环的内部。
解决方案
您可以通过将该参数作为参考来更改函数参数的值:
bool getNum(int &n) // note the reference parameter
{
// changes to n are visible to the caller of this function
}
当然,您还必须更改声明getNum
以匹配。
请注意,调用代码没有变化。
这是一个工作示例的演示。
推荐阅读
- chatbot - Lex 无法识别 AMAZON.EmailAddress 的语音输入
- java - 是否有 JSR-330 等效于 Spring 的 @Bean 或 Guice 的 @Provides 注释?
- python - 在 Python 中关注时跳过 Instagram 私人用户
- python - Python 3 gzip 会关闭 fileobj 吗?
- java - 确定一个字符串在 Java 中是否包含 *exactly* 3 个单词和 *exactly* 2 个空格
- postgresql - 重置服务器后如何恢复 postgresql 数据库
- solr - SOLR Cassandra 查询是否预计会详尽无遗?
- r - 基于 R 中的另一列对列的所有组合求和
- python - 在将字段名称与现有列连接时转置/堆栈/取消堆栈熊猫数据帧
- android - 如何使用 NotifyItemInsert() 和 NotifyItemDataChanged() 方法在 RecyclerViewAdapter 上处理更新数组