C++总结 ----- 引用

Thinking in C++》中解释:

   引用(&)像是一个能编译器逆向引用的常量型指针。通常用于函数的参

数表中和函数的返回值,也可以独立使用。例如:

int x;

int &r = x;

当创建一个引用时,引用必须被初始化指向一个存在的对象,但也可以:

int &q = 12;

这里,编译器分派了一个存储单元,它的初值初始化为12。引用必须和存储单元联

系,访问引用时,就是访问那个存储单元。如:

int x = 0;

int &a = x;

a++;

事实上就是增加x。考虑引用最简单的方法是把它当作是一个奇特的指针,这个指

针的优点是不必怀疑它是否被初始化了(编译器强迫它初始化),也不必知道怎么样

对他逆向引用(这由编译器做)。

使用引用时有一定的规则:

  当引用被创建时,必须初始化。(指针则可以在任何时候被初始化)

 一旦一个引用被初始化为指向一个对象,它就不能被改变为对另一个对象的引

用。(指针可以在任何时候指向另一个对象)

         不可能有NULL应用,必须保证引用和一块合法的存储单元关联。

       函数中的引用:

       最常看见的引用的地方是函数参数和返回值中,当引用被用做函数参数时,函数内任何对该引用的改变将对函数外的参数改变。如果函数中返回一个引用,必须象从函数种返回一个指针一样对待。

      

       指针引用:

       C语言中,如果想改变指针本身而不是它所指向的内容,函数声明可能像这样:

       void fun(int**);

       传递它时,必须是指针的地址:

       int l = 47;

       int *p = &l;

       fun(&p);

       对于C++中的引用,语法清晰多了,函数参数变成指针的引用,用不着取得指针的地址。

       #include <iostream.h>

       void increment(int*& i) { i++;}

       main()

       {

           int *i = 0;

           cout<<i=<< i << endl;

           increment(i);

           cout<<i=<< i << endl;

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值