| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 483 人关注过本帖
标题:为什么函数的值变成静态的了?新手请教
只看楼主 加入收藏
mnb1237273
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-1
结帖率:0
收藏
 问题点数:0 回复次数:3 
为什么函数的值变成静态的了?新手请教
  小弟不才,刚刚学习到引用这里,int a; int &b=a;这个我知道是引用,以后操作b就等于操作a了,但是对于函数的引用小弟没懂,如有如下程序:

#include <iostream>   
using namespace std;  

int a = 4;  
//函数返回a的引用,即a的别名!!!!   
 
int &f(int x)  //这里f前加的那个“&”符号后函数到底发生了什么变化????
{  
   
   a = a + x;  
    return a;  
}  
  
int main()
{  
  
    int t = 5;   
      cout << f(t) << endl;//输出  9    (a=9)  t=5   
    f(t) = 20;//先调用,再赋值  a=20    t=5                 为什么这里能对函数赋值?
    cout << f(t) << endl;//输出25  (a=25)    t=5   
    t = f(t);//先调用,再赋值   a=30,t=30   为什么这里a=30?
   cout << f(t) << endl;//60                为什么这里a=60?  为什么每次执行后a的值保留了下来参与了下次的执行?不是要加static才是这样的么?
   
   return 0;  
}  

[ 本帖最后由 mnb1237273 于 2014-6-26 16:50 编辑 ]
搜索更多相关主题的帖子: include return 
2014-06-26 16:43
Andy_xiaoyan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-6-26
收藏
得分:0 
我同为菜鸟,发表自己的见解,有错误楼下请指出,我这是第一次给人回答,很胆怯啊。
既然f()函数的返回值是引用,并且return a,说明f()就是 a的别名,返回的就是a的引用
其实应该定义一个类似;int &b = f(t),这里 b就是对a的引用,给f(t) = 20 ,就相当于对a 赋值,

至于那里为什么是30 ,因为上面 a=25 ,t = 5,调用函数后当然是30,不然呢?
每调用一次 ,全局变量就改变了,和static 有什么关系
2014-06-26 17:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
int &f(int x)  //这里f前加的那个“&”符号后函数到底发生了什么变化????
------ 不是f前加了个&,而是int后加了个&。int&是一体的,作为返回类型。

f(t) = 20;// 为什么这里能对函数赋值?
------ f(t)是函数吗?f才是函数。
2014-06-27 09:00
mnb1237273
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-1
收藏
得分:0 
感谢楼上二位兄台 小弟明白了,谢谢。

三分天注定,七分靠打拼,爱拼才会赢。我要早日跨入C语言的精彩世界。实践才是检验真理的唯一标准!
2014-06-27 09:51
快速回复:为什么函数的值变成静态的了?新手请教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021191 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved