Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1485141
  • 博文数量: 181
  • 博客积分: 3308
  • 博客等级: 中校
  • 技术积分: 2227
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-03 12:03
个人简介

我是zoro

文章分类

全部博文(181)

文章存档

2015年(1)

2013年(35)

2012年(39)

2011年(50)

2010年(56)

分类: LINUX

2010-10-26 10:47:18

一、引用概念:
    对变量起另外一个名字(外号),这个名称称为该变量的引用。
格式:
    <类型>   &<引用变量名> = <原变量名>;
    其中原变量名必须是一个已定义过的变量。如:
    int   max ;
    int  &refmax=max;
    refmax并没有重新在内存中开辟单元,只是引用max的单元。max与refmax在内存中占用同一地址,即同一地址两个名字
    当&a的前面有类型符时(如int &a),它必然是对引用的声明;如果前面无类型符(如cout<<&a),则是取变量的地址。

对引用类型的变量,要注意以下几点:
1、引用在定义的时候要初始化(且只能初始化一次)。
    int  &refmax;//错误,没有具体的引用对象
    int  &refmax=max;//max是已定义过的变量
2、对引用的操作就是对被引用的变量的操作。
3、引用类型变量的初始化值不能是一个常数。
4、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。

指针与引用的区别:
1、指针是通过地址间接访问某个变量,而引用是通过别名直接访问某个变量。
2、引用必须初始化,而一旦被初始化后不得再作为其它变量的别名。

二、引用的用途
    引用的用途主要是用来作函数的参数或函数的返回值。
1.引用用来作函数参数
    引用作函数的形参,实际上是在被调函数中对实参变量进行操作。

#include <iostream>

using namespace std;

void change(int &x,int &y) //x,y是实参a,b的别名
{
    x=x^y;
    y=x^y;
    x=x^y;
}

int main(void)
{
    int a=3,b=5;
    change(a,b); //实参为变量
    cout << "a=" << a << "\nb=" << b <<endl;
    return 0;
}

运行结果:

zx@zhangxu:~/lianxi/c++$ ./test
a=5
b=3


2.函数的返回值为引用类型
    可以把函数定义为引用类型,这时函数的返回值即为某一变量的引用(别名),因此,它相当于返回了一个变量,所以可对其返回值进行赋值操作。这一点类同于函数的返回值为指针类型 。

#include <iostream>

using namespace std;

int a=4;
int & f(int x)
{
    a=a+x;
    return a;
}

int main(void)
{
    int t=5;
    cout << f(t) << endl; // f(5)=4+5=9

    f(t)=20; // a=20

    cout << f(t) << endl; // f(5)=20+5=25,即a=25

    t=f(t); // t=f(5)=a=25+5=30

    cout << f(t) << endl; //f(30)=30+30=60

    return 0;
}

运行结果:

zx@zhangxu:~/lianxi/c++$ ./test
9
25
60


阅读(1251) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~