一道困惑已久的问题,求助!!!

icebanana 2006-06-21 10:30:56
int &f() {int i=10; int &j=i; return j; }

int g() {int j=20; return j; }

int main(int argc, char* argv[])
{
int &ri=f( );
int rj=g( );
printf("ri=%d\trj=%d\n", ri, rj, 1, 2, 3, 4, 5, 6, 7,8);
int &gi=f( );
int gj=g( );
printf ("gi=%d\tgj=%d\n", gi, gj);
return 0;
}

打印结果 ri 和 gi 不相等,删除 printf 语句中的 8, 结果会有变化? 再删除 printf 语句中的 7, 结果又有变化,为什么ri 的值总是打印其值的 printf 函数调用的倒数第三个参数?

...全文
81 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
icebanana 2006-06-21
  • 打赏
  • 举报
回复
和黑客没有关系,主要是想明白
为什么ri 的值总是打印其值的 printf 函数调用的倒数第三个参数?
可不可以给我解释一下这个问题?
handsomerun 2006-06-21
  • 打赏
  • 举报
回复
晕,上面写错了,是指针和引用

原因很参考effective c++
handsomerun 2006-06-21
  • 打赏
  • 举报
回复
不要返回局部变量的返回和引用
记住这个
sun67847007 2006-06-21
  • 打赏
  • 举报
回复
引用局部变量
xazl 2006-06-21
  • 打赏
  • 举报
回复
楼主搞这个有什么必要啊!你这种黑箱测试C语言库和操作系统,除了想做黑客,我看来没有别的作用。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧