注册 登录
编程论坛 C++教室

“引用作为函数参数”求讲解

cengyue 发布于 2012-03-10 00:09, 804 次点击
#include "iostream"
using namespace std;
void larger(int& , int& );
int _tmain()
{
    int value1=10;
    int value2=20;
    cout<<larger(value1,value2)<<endl;
    return 0;
}

void larger(int& m, int& n)
{
    n=30;
    return m>n? m:n;
}
结果为30,而且value2的值也变为30,求解释。
12 回复
#2
lz10919149992012-03-10 14:04
larger函数中,m是value1的别名,n是value2的别名,所以针对n或m的修改就是对value1或value2的修改。
#3
陈雷阿宝2012-03-10 21:22
larger函数的参数是引用,引用就是一个内存可以用两个字母表示,即n和value2指的是同一个地址中的数,都是30.
#4
非死亡!2012-03-10 22:35
看看这个 你就明白了:
程序代码:
#include "iostream"
using namespace std;
void larger(int , int& ,int* );
int main()
{
    int value1=1;
    int value2=2;
    int value3=3;
    larger(value1,value2,&value3);
   
    cout<<value1<<"   "<<value2<<"     "<<value3<<endl;
    return 0;
}

void larger(int m, int& n,int *l)  //不用的参数
{
    n=0;
    m=0;
    (*l)=0;                        //注意是*l  如果是l=0;会是什么答案?为什么?
}


 
#5
享像2012-03-18 22:50
我认为你的void larger(int& , int& )函数无法返回值;你已经声明无返回值拉!
引用相当于内存的地址吧;
#6
HUYOULIANGHH2012-03-19 10:25
这里面的两个引用完全可以换成两个指针,其实操作m就是操作main函数中的变冒!
#7
cengyue2012-03-28 00:19
回复 2楼 lz1091914999
谢谢 我觉的三楼的好理解些
#8
cengyue2012-03-28 00:23
回复 4楼 非死亡!
这程序 我看起来还真有点费劲 回去好好研究
#9
cengyue2012-03-28 00:23
回复 5楼 享像
呵呵 int larger
#10
cengyue2012-03-28 00:24
回复 6楼 HUYOULIANGHH
引用和指针好像有些不一样 我当然还不清楚
#11
cengyue2012-03-28 00:25
回复 3楼 陈雷阿宝
我再慢慢理解吧
#12
申宇飞2012-03-28 00:55
为什么运行不了呢?
C:\Windows\System32\he.cpp(8) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'void' (or there is no acceptable conversion)

        C:\Windows\System32\he.cpp(3) : see declaration of 'larger'
怎么改


#13
cengyue2012-03-28 22:42
回复 12楼 申宇飞
你是运行我写的那个程序吧。在函数larger定义的时候用了void,所以不返回函数值,改成int larger应该就好了。
1