当前位置:   article > 正文

C++ 引用 指针_引用指针

引用指针

引用为对象起一个名字,引用类型引用另外一种类型

例如: int reference = 100;

int &another = reference;

一般的,初始化变量时,初始值会被拷贝到创建的新对象中。

However,引用时并不是将初始值拷贝给引用。引用将一直和初始值对象绑定在一起。

Note:引用只是已存在对象的另一个名字(它不是一个对象)

             对引用赋值,相当于对绑定对象赋值。

Note:引用的初始值必须是对象(不能是一个值)

例:int &reference = 150; is unvalid

指针:是指向另外一种类型的复合类型,与引用类似可以实现对其他对象的间接访问。

Note:指针与引用存在不同点:

        1. 指针是一个对象,允许对指针进行赋值和拷贝

        2. 生命周期内,一个指针可以指向多个不同的对象

        3. 不需要在定义的时候赋初始值(若未初始化,将有一个不确定的值)

功能1:获取对象的地址

例: int a = 1;     int *pointer = &a    (pointer存放a的地址,是指向a的指针)(&是取地址符)

        int a = 1;     int *b = &a;    int *c = b;  (b是指向a的指针) (指针类型需要与它所指向的对象匹配)

4种状态:指向一个对象

                 指向紧邻对象所占空间的下一个位置

                 空指针(未指向任何对象)

                 无效指针:上述之外的其它

功能2:利用指针访问对象

例:  int a = 1;    int *b = &a;     cout << *b; (指针b指向a, 使用解引用符输出a的值“1”)

Note:对指针解引用会得出所指对象,对解引用对象赋值,就是给指针所指对象赋值。(解引用仅适用于指向某个对象的有效指针)

例:  *b = 0;    cout << *b;   (输出0)

多重含义:紧随类型名(& 引用   *指针)

                  表达式中   (&取地址   *解引用)

空指针:不指向任何一个对象的指针

        初始化空指针: int *a = nullptr;    int *b = 0;    int *c = NULL; (NULL需要包含 #include cstdlib)

        在C++11下,最好使用nullptr,尽量避免使用NULL

注意:建议初始化所有指针,尽量在定义了指针之后再定义指向它的指针。如果不清楚指针应该指向何处,就初始化为nullptr或0.

其它指针操作:将指针作为条件判断(非0指针对应的条件值是true)

                          用相等==;不等!=进行比较(若指针存放的地址相同,则相等)

指向指针的指针:声明符中修饰符的个数并没有限制。指针允许把指针的地址再存放到另外一个指针中

通过*的个数定义指针的级别。**表示指针的指针。***表示指针的指针的指针

指向指针的引用:(没有指向引用的指针,因为引用不是一个对象)
例:int i =42;   int *p;   int *&r = p;    r =&i;   *r = 0;

r的类型根据离r最近的符号判断(此处为&),表明R是一个引用。由右向左的下一个符号为*,说明r引用的是一个指针。int符号说明r引用的是一个int类型的指针

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/墨韵书生/article/detail/63180
推荐阅读
相关标签
  

闽ICP备14008679号