引用小结

原创 2006年06月06日 22:35:00
1.   定义的时候应该将引用运算符放在类型名后面,如
int& rInt;
虽然int &rInt;   int & rInt; 都是对的,但是最好还是不要这样做。
2.   引用的地址与所引用的目标的地址是同一地址,如
int& rInt = intOne;
这样&rInt的值和&intOne的值是一样的。
3.   引用一旦初始化,就钉在初始的目标上。任何对该引用的赋值都只是对引用的目标赋值,而不是将引用钉在另一个目标上。如
int intOne = 5;
int intTwo = 8;
int& rInt = intOne;
rInt = intTwo;
这样3个变量的值都是8,但是intOnerInt占用同一内存,intTwo占用另一内存。并没有由于执行了rInt = intTwo,而说rIntintTwo占用同一内存。
4.   下面的代码是合法的:
double& rr = 1;
这条语句解释为:
double temp;
temp = double(1);
double& rr = temp;
5.   void进行引用是不允许的。例如: void& a =3;
6.   不能建立引用的数组:
int a[10];
int& ra[10] = a;   //error
因为数组名是该元素集合空间的起始地址,已经不是一个名副其实的数据类型了。
7.   引用不是类型,所以没有引用的引用,也没有引用的指针,如下是错的:
int& ra = a;
int& * p = &ra;            //error,企图定义引用的指针
8.   有空指针,无空引用:
int& ri = NULL;           //无意义
9.   由于指针也是变量,所以可以有指针变量的引用:
int* a;
int* & p = a;      //表示int *的引用p初始化为a
int b = 8;
p = &b;         //OK
10.函数返回值时,要生成一个值的副本,而用引用返回值时,不生成值的副本。
11.传递参数时,用引用和指针,容易在函数内无意中修改了目标的值。保护时参不被修改的办法是传递const指针和引用。
12.对引用的初始化,可以是变量,可以是常量,也可以是一定类型的堆空间变量。但是,由于引用不是指针,所以直接从堆中获得变量空间来初始化引用是错的:
    int& a = new int(2);        //error,可能分配空间失败
    正确的做法应该是:
    int* pInt = new int;
    if(pInt ==NULL)
    {
       cout<<”error memory allocation”;
       return;
    }
    int& rInt = *pInt;

C++ 中“空引用”与“空指针”的区别

网络上有很多讨论C++ 的“引用”与“指针“的区别的文章,谈到区别,其中有一条:“引用不能为空(NULL),引用必须与合法的存储单元关联,指针则可以是NULL)”,但在实际应用中,有时候为了保持一致性...
  • luansxx
  • luansxx
  • 2013年08月21日 10:48
  • 10757

空指针漏洞防护技术-初级篇

源文地址:http://www.panshy.com/articles/201508/security-2509.html 空指针漏洞防护技术 安全历史上由于空指针所带来的漏洞及攻击数不胜数,但由于...
  • yingzheng1983
  • yingzheng1983
  • 2015年08月05日 17:14
  • 1818

空指针漏洞防护技术-高级篇

在《空指针漏洞防护技术-初级篇》中我们介绍了空指针及空指针漏洞的概念,在这次高级篇中介绍空指针利用及相应的防护机制。   作者:孙建坡 原文地址:http://www.panshy.com/ar...
  • yingzheng1983
  • yingzheng1983
  • 2015年08月06日 21:15
  • 1251

解引用NULL指针

一般导致程序崩溃的最重要原因之一就是试图解引用NULL指针。正如上几篇文章中所说的,智能指针RefCountPtr和ScopedPtr提供了运行时的诊断。但是,并不是所有的指针都是拥有某个对象所有的智...
  • kerry0071
  • kerry0071
  • 2014年07月18日 11:21
  • 2238

“空指针”引用导致“程序异常退出”两例

最近,又偶尔发现在某些手机上会提示“程序异常退出”的情况,在android中,最通常的原因可能是资源引用的不正确(即findViewById函数引用的资源是错误的),或者是出现空指针问题。重新分析和r...
  • liranke
  • liranke
  • 2017年04月05日 14:35
  • 749

C++11笔记(3)——引用&指针辨析

指针和引用辨析,异同区分
  • u012424148
  • u012424148
  • 2016年08月27日 18:29
  • 195

成员指针和成员指针逆向引用运算符".*"

指针是指向一些内存地址的变量,既可以是数据的地址也可以是函数的地址。C++的成员指针遵从同样的原则。困难的是所有的指针需要一个地址,但在类内部没有地址;选择一个类的成员意味着在类中偏移。只有把这个偏移...
  • RoyMuste
  • RoyMuste
  • 2014年08月17日 10:13
  • 702

理解指向指针的引用

在做项目时,用到第三方的API:RequestService( string *reqst, string *&Rsp)       怎么来调用这个API呢?由于对指针的使用不熟悉,分别作了如下尝试:...
  • acs713
  • acs713
  • 2013年10月09日 16:11
  • 13583

使用引用还是使用指针

最近碰到一个面试题:何时使用指针,何时使用引用? 首先,标准 C 中是没有引用形参的,只能使用指针形参,应用是c++才加入的,c++中,引用可以看做变量的别名。 那么引用和指针有什么区别呢?主要有...
  • ljthdu
  • ljthdu
  • 2014年07月29日 16:52
  • 1220

C++语言笔记系列之五——引用(&)和this指针详解

1.this指针 (1)this指针是一个类所隐含的指针,一个类(注意不是对象)只有一个this指针,this指针是该类的所有对象所共享的。 (2)当通过一个对象访问该对象的成员时,默认this指针指...
  • laoniu_c
  • laoniu_c
  • 2014年02月24日 10:05
  • 1534
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:引用小结
举报原因:
原因补充:

(最多只允许输入30个字)