【问题标题】:difference in argument used in function call and function definition函数调用和函数定义中使用的参数的差异
【发布时间】:2021-04-26 16:05:13
【问题描述】:

最近开始学习C++,我不明白为什么要定义一个函数,比如

void change_value (int &b);

但是当你在 main 中调用函数时,

int test = 10;
change_value (test);

您不使用 &test,而是使用变量本身 (test)。

【问题讨论】:

    标签: c++ function


    【解决方案1】:

    &在不同的语境中有不同的含义。

    b 参数使用& 来声明它是referenceint& 是参数类型 (int&) 的一部分。调用该函数时,您只需传入您希望b 引用的int 变量,该引用将绑定到该变量。

    如果调用者先于int 变量,它通过& 传入,这将调用address-of 运算符来获取变量的地址,产生@987654322 @ 变量。

    referencepointer 是两个完全不同的东西。

    【讨论】:

    • 嗨@RemyLebeau 可能会放一些代码sn-ps - 因为我认为你的意思是在函数调用中 - 即.. some_other_function (&test); 用于注释地址(尽管这没有任何意义如果给出上下文,则使用 OP 很有用)。
    • @MrR 为什么只“在函数调用中”?您可以将对象地址用于您想要的任何目的,而不仅仅是函数调用参数。
    • 是的,但 OP 是关于函数调用的 - 所以只是建议答案应该清楚地说明上下文 - 即放入好的例子会使答案更有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多