【发布时间】:2017-03-25 10:50:48
【问题描述】:
在这个例子中:
#include <iostream>
using namespace std;
void foo(int& x)
{
x = x%2 + 10;
}
int* goo(int& y)
{
y = y/100 + y%10;
return &y;
}
void main()
{
int temp = 1234;
int *p = goo(temp);
cout << temp << endl;
foo(*p);
cout << temp << endl;
}
有获取int地址的goo函数, 但是你可以看到 main 有一个你发送给这个函数的 int temp。 该函数应该获得一个地址,但它却获得了 int 怎么可能?
我运行了该程序,它确实有效,但我不明白为什么。
【问题讨论】:
-
stackoverflow.com 上的所有问题都必须以纯文本形式包含问题本身中的所有相关信息。不接受任何可能随时停止工作、使问题变得毫无意义的外部网站链接。
-
你可以在这里发布你的代码而不是图表吗?
-
goo没有得到 int 地址。 -
不,该程序绝对不能“工作”。
goo()被声明为返回一个指向 int 的指针,但它没有返回任何东西;并且返回值被取消引用。这是未定义的行为。 -
@Sam Varshavchik 我编辑了问题,不知何故,返回语句从我添加的代码中抛出,而不是提供的屏幕截图 OP,合并错误?
标签: c++ pass-by-reference