引用或取地址和指针的区别

引用或取地址和指针的区别

ID:38743907

大小:52.50 KB

页数:6页

时间:2019-06-18

引用或取地址和指针的区别_第1页
引用或取地址和指针的区别_第2页
引用或取地址和指针的区别_第3页
引用或取地址和指针的区别_第4页
引用或取地址和指针的区别_第5页
资源描述:

《引用或取地址和指针的区别》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、&的“引用”或“取地址”和“*指针”的区别指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一个内存地址,编译器不能通过该指针所指向对象的类型和大小,因此想要通过void*指针操作对象必须进行类型转化。    ★相同点:   1.都是地址的概念;    指针指向一块内存,它的内容是所指内存的地址;    引用是某块内存的别名。   ★区别:   1.指针是一个实体,而引用仅是个别名;  2.引用使用时无需解引用(*),指针需要解引用;  3.引

2、用只能在定义时被初始化一次,之后不可变;指针可变;    引用“从一而终”^_^  4.引用没有const,指针有const,const的指针不可变;  5.引用不能为空,指针可以为空;  6. “sizeof引用”得到的是所指向的变量(对象)的大小,而“sizeof指针”得到的是指针本身(所指向的变量或对象的地址)的大小;  typeid(T)==typeid(T&)恒为真,sizeof(T)==sizeof(T&)恒为真,但是当引用作为类成员名称时,其占用空间与指针相同4个字节(没找到标准的规定)。  7.指针和引用

3、的自增(++)运算意义不一样;   ★联系    1.引用在语言内部用指针实现(如何实现?)。  2.对一般应用而言,把引用理解为指针,不会犯严重语义错误。引用是操作受限了的指针(仅容许取内容操作)。  引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n是m的一个引用(reference),m是被引用物(referent)。  intm;  int&n=m;  n相当于m的别名(绰号),对n的任何操作就是对m的操作。例如有人名叫王小毛,他的绰号是“三毛”。说“三毛”怎么怎么的,其实就是对王小毛说三道四。

4、所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。   引用的一些规则如下:  (1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。  (2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。  (3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。   以下示例程序中,k被初始化为i的引用。语句k=j并不能将k修改成为j的引用,只是把k的值改变成为6.由于k是i的引用,所以i的值也变成了6.   inti=5;  intj=6;  int&k=

5、i;  k=j;//k和i的值都变成了6;    上面的程序看起来象在玩文字游戏,没有体现出引用的价值。引用的主要功能是传递函数的参数和返回值。C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。   1)以下是“值传递”的示例程序。由于Func1函数体内的x是外部变量n的一份拷贝,改变x的值不会影响n,所以n的值仍然是0.   voidFunc1(intx){x=x+10;}intn=0;Func1(n);cout<<“n=”<

6、。由于Func2函数体内的x是指向外部变量n的指针,改变该指针的内容将导致n的值改变,所以n的值成为10.voidFunc2(int*x){(*x)=(*x)+10;}⋯intn=0;Func2(&n);cout<<“n=”<

7、n=”<

8、件上盖上公章的印子就行了,如果把取公章的钥匙交给他,那么他就获得了不该有的权利。   ——————————   摘自「高质量c++编程」   指针与引用,在MoreEffectiveC++的条款一有详细讲述,我给你转过来   条款一:指针与引用的区别   指针与引用看上去完全不同(指针用操作符‘*’和‘->’,引用使

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。