【发布时间】:2019-09-16 09:12:44
【问题描述】:
我已经有一段时间没有用 C++ 编写任何东西了。当我作为 CIS Tutor 试图帮助另一个人时,他想知道为什么在指向 int 的指针旁边有一个 & 符号是必要的。
我想如果你通过引用传递一个指针并且你指向别的东西,主知道在你传递之后 val 将等于你设置它等于的任何值。
下面会有一个例子来说明我想说的话。
这是正确的吗?
//main function
int variable = 0;
int* val = &variable;
function1(val);
cout << *val << endl;
function2(val);
cout << *val << endl;
//Passing in a pointer with reference.
void function1(int*& value)
{
int variable = 9;
value = &variable;
}
//Passing in a pointer without reference.
void function2(int* val)
{
int variable = 9;
value = &variable;
}
我的假设是程序将输出 9 而不是 8 或 0。我希望这能让你们清楚地了解我想要问的问题。
【问题讨论】:
-
*指向原型中的 int 的指针
-
你在问为什么一个函数会有像
void function1(int*& value)这样的签名? -
你的
function1坏了。调用者将留下val作为悬空指针 -
函数 2 已损坏 - 没有所谓的 'value',参数是 'val'。在提交之前编译 minimal reproducible example 总是好的。
-
@NathanOliver 是的。
标签: c++ function pointers reference prototype