c++ - 将函数分配给变量

标签 c++

为什么将函数赋值给变量?将 int x, y 分配给 ReadNumber() 有什么意义?它是为了将函数的返回值存储在变量中吗?或者这只是传递参数的一种方式?

#include <iostream>

int ReadNumber()
{
    using namespace std;
    cout << "Enter a number: ";
    int x;
    cin >> x;
    return x;
}

void WriteAnswer(int x)
{
    using namespace std;
    cout << "The answer is " << x << endl;
}

int main()
{
    int x = ReadNumber();
    int y = ReadNumber();
    WriteAnswer(x+y);
    return 0;
}

最佳答案

  • “为什么他要把一个函数赋给一个变量?”

他没有。这个(注意括号):

//                vv
int x = ReadNumber();

将返回值赋给x。括号意味着该函数实际上被调用,或者函数体被执行。该函数末尾有 return x;,因此它返回 x 的值,该值被分配给 x - main 中的那个。请注意,main 中的 xReadNumber 中的 x 完全不同。

此外,您不能将函数分配给 C++ 中的变量(您可以使用函数指针,但这是另一回事)


  • “将 int x, y 赋值给 ReadNumber() 有什么意义?”

ReadNumber返回的值是一个临时值,它应该存储在某个地方。因此,这就是为什么在 main 中定义 xy 的原因,以便它们每个都存储从 ReadNumber< 返回的值。并且每个值都可以不同。

如果main中没有xy,则返回值不可用,根本无法访问。然后它们就被摧毁了。


  • “它是为了将函数的返回值存储在变量中吗?或者这只是传递参数的一种方式?”

这里没有任何争论。参数写在方括号 ( () ) 内,而这里,调用 ReadNumber 时没有这样的参数。所以是的,它们用于存储返回值。


WriteAnswer 处没有 return,并且它被定义为 void - 这意味着 - 没有返回值。这就是为什么没有这样的事情

int x = WriteNumber( X + y )

但请注意,这里 WriteNumber 有参数。只有一个,它是计算出的 x + y 的值。所以,就像:

int z = x + y;
WriteNumber( x );

关于c++ - 将函数分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6939663/

相关文章:

c++ - 找出有吸引力的物体上的加速度

c++ - Qt 每秒更新一次值

c++ - std::thread::join 在 libcxx 中实现在哪里

c++ - 如何将OpenCl库链接到Clion IDE

C++ 函数指针和地址

c++ - 如何在 C++ 的派生类中分配数据成员数组?

c++ - 在C++中访问类字段

java - 在 java 或 UE4 c++ 中获取三星 Galaxy S7 的真实屏幕分辨率

c++ - OpenMP 在 for 循环中并行化代码块?

c++ - 如何为复杂算法编写 ut