首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

函数引用形参的有关问题,求大神解惑

2013-03-28 
函数引用形参的问题,求大神解惑 using namespace stdint f1(int &v1,int &v2){int tempv2v2v1%v2//这

函数引用形参的问题,求大神解惑

 using namespace std;
    int f1(int &v1,int &v2)
{
int temp=v2;
v2=v1%v2;//这里居然不会出错?引用类型的变量不是只能初始化吗?而且v1%v2是右值
v1=temp;
return (v2?f1(v1,v2):v1);
}
int main()
{
int a,b;
cout<<"enter two values:"<<endl;
cin>>a>>b;
cout<<"the result: ";
cout<<f1(a,b)<<endl;
}


想知道是怎么回事
[解决办法]
为什么会出错
v2是实参b的引用 v2就是b b就是v2
v2=v1%v2; 就是单纯的赋值,
再一个 引用类型的变量不是只能初始化吗? 是必须初始化 不是只能初始化

[解决办法]
你要分清楚变量的定义和使用。
v1和v2是引用变量,目的是想在函数中改变这2个函数参数;
你说的“引用类型的变量不是只能初始化吗”是对的,表示你定义一个引用变量的时候必须初始化,而且以后也只能指向这个变量(它本质上就是其他变量的别名)。
比如:
int b;//定义了一个变量,没有初始化
int &r=b;//定义了一个引用,引用b
r=10;///将引用变量r指向的变量赋值为10,或者别的变量也行
int c=20;
r = c;///这个也是对的,r仍然指向b,但是把c的值赋值过去,你上面就是这种情况。

热点排行