【问题标题】:What does it mean to return a function result as an "output parameter"?将函数结果作为“输出参数”返回是什么意思?
【发布时间】:2012-11-20 03:41:33
【问题描述】:

您好,我希望我能更好地了解有关 C++ 的一些内容。我们正在学习函数,我错过了一节课,我认为这是错过的错误课程,因为我很困惑。关于清晰简洁的方向和对术语的理解,我有两个问题。这是我的第一个:

a) 编写一个名为“product”的 C++ 函数,计算传递给它的两个整数值的乘积。该函数将接受两个输入参数并将计算得到的答案作为函数的输出参数返回。 b) 编写一行代码,可用于调用(调用)此函数。

这是第二个:a) 编写一个名为“product”的 C++ 函数,计算传递给它的两个整数值的乘积。该函数将接受两个输入参数并返回产品答案作为函数执行的结果。 b) 编写一行代码,可用于调用(调用)此函数。

所以我猜第二个应该是这样的:

 int product(int a, int b)
 { return a*b; }

和b部分为 cout

首先我是对的,无论哪种方式,返回答案作为输出参数意味着什么。 当我在并且你觉得可怜我时,你能告诉我应该使用 void 而不是 int 吗?最后有人可以更好地解释通过引用返回究竟是什么。我得到了关于它的整个方面需要在参数的末尾有一个 & 并且“技术上”它允许我改变它而不是仅仅返回它但我希望有更深入的东西?很抱歉这么需要,但任何帮助将不胜感激。谢谢 琳达

附:我会标记为作业,但它已被弃用。对不起!

【问题讨论】:

  • 家庭作业标签已被弃用,部分原因是许多家庭作业问题过于本地化,无法为未来的访问者使用,因此我投票决定关闭这个标签。
  • void 的类型表示“无类型”。所以返回void 的函数不会返回任何东西,而将void 作为唯一参数的函数不会接受任何参数。在 C++ 中,最后一个可以缩短为一组空括号。
  • 你错过的讲座应该伴随着你教科书中的阅读作业。你读完了吗?你能从同学那里得到讲义吗?也许您的教师会在课程网站上提供笔记或幻灯片。

标签: c++ function vocabulary


【解决方案1】:

输出参数是从函数返回数据的另一种方式。本质上,您不会返回该值,而是向函数发送一个框,答案将在其中。将答案放入框内修改,函数运行后即可从中获取答案。

一个“标准”返回值(就像你做的那样):

int product(int a, int b)
{ return a*b; }

调用标准函数:

int answer = product(10, 5);
cout << answer << endl;

“输出参数”:不是将answer 作为实际值(如 5 或 3)传递,而是发送一个框到答案应该去的地方;更改此框的内容也会更改 main 函数中的变量值(表示为 int &amp; answer 而不是 int answer)。

void product_output_parameter(int a, int b, int & answer)
{ answer = a*b; }

调用函数:

int answer;
// send answer in as a place to put the answer
product_output_parameter(10, 5, answer);
// the value stored in answer has changed
cout << answer << endl;

如果函数是这样定义的:

void product_output_parameter(int a, int b, int answer)
{ answer = a*b; }

answer 的更改只会发生在函数内部,因此它不起作用。

希望这会有所帮助!

【讨论】:

  • 确实如此!非常感谢您的帮助!我很欣赏你的彻底回答。你摇滚!
【解决方案2】:

您编写的函数计算产品并调用产品函数。你也可以这样调用它。

int productOfAandB = product(a,b);

引用允许将调用者范围内的变量更改为被调用者。经典的例子是让 Bob 去更衣室换 PE,在这个过程中 Bob 只是去更衣室换衣服,然后告诉 Bob 这样做的过程继续使用改变后的 Bob。如果将 Bob 复制到更衣室,然后从更衣室返回替换原来的 Bob,它的行为更像是一个返回值函数。

  1. 按值传递,按值返回 BOB = changForPE(BOB);// 这有效地将 BOB 替换为全新的 BOB
  2. 通过引用传递 changeForPE(&BOB);// 这个函数有能力对存储在 BOB 的变量做一些事情 //但它似乎没有覆盖 BOB 变量

【讨论】:

  • 我喜欢这个比喻。我敢打赌,我以后一定会记住的。非常感谢!
  • 很久以前教我 C++ 的那个人叫 Bob,他很爱自己,我从他那里偷了这个主意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多