是小邹啊

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

例题 1

int f(int i)

{

  return ++i;

}

int g(int &i)

{

return ++i;

}

void main()

{

  int a,b;      

a=b=0;

a+=f(g(a));    这里一个是引用 一个是普通的调用 先执行g(a) g(0)-> 1 同时修改了a的值=1 f(1)->2 a+=2 a=a+2 注意此时的a已经变为了1 所以最后得到 a = 3

b+=f(f(b));    这里是普通的函数,只改了形参,不影响实参,f(b)=1 但是此时的a还是0,f(1) = 2 a+=2  a=a+2 此时的a=0 所以得到的 a=2

cout<<"a="<<a<<" b="<<b<<endl;

}

例题2

int &max(int &x,int &y)

{

   return (x>y?x:y);

}

void main()

{

   int n=2,m=10;

   max(n,m)--;  这里执行后到结果是 10 但是-- 后返回的是实参y 也就是 m = 10-- = 9

   cout<<”n=”<<n<<”,m=”<<m<<endl;     //得到的结果是 n=2,m=9

}

 

posted on 2020-04-23 20:21  是小邹啊  阅读(154)  评论(0)    收藏  举报