cgr939923423 2016-11-19 15:50 采纳率: 33.3%
浏览 793

关于”引用”的一个小问题

#include
int &fun(int a, int b)
{
static int c;
c = a + b;
return c;
}
void main()
{
using namespace std;
if (fun(1, 2) == fun(3, 4))
cout << "相等" << endl;
system("pause");
}
为什么输出的是想等?还有函数返回的是c的引用 引用不适应个有个名字么?比如
int a=12;
int &b=a;
b是a的引用 所以函数返回c的引用不也应该有个类似b的别名么?(如下)
int *&()
{
int *p=new int;
int *&b=p;
return b;
}
这段代码有问题么?(即使有问题还是想问问)还有返回的b该拿什么变量接收?

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-11-19 15:51
    关注

    关键是这个 int &fun 引用符号,它使得返回值指向静态变量c,所以两次计算后,前面一次计算的结果被后面覆盖,比较最后进行,就相等了。

    int *&() 缺少函数名
    int *&foo() 这样可以编译通过

    评论

报告相同问题?

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来