一、什么是引用(reference) ?已经存在的对象的另外一个名字。

  引用有什么特别的?

    1.引用在定义时,以&开头。

    2.引用不是对象,只能绑定在对象上。所以必须在初始化的时候,指定引用绑定的对象。而且引用绑定是不可以改变的。

      int val = 0;

      int &refVal = val;

      不允许这样初始化 int &refVal;

    3.就像使用变量名一样,对引用赋值,实际上是给该引用绑定的对象赋值,获取引用的值,也同样是获取与该引用绑定的对象的值。

      int &refVal2 = refVal ;// refVal2绑定到了val上面。

      int copyVal = refVal; // 初始化copeVal为val的值。

二、什么是指针(pointer)? 存放着某个对象所在地址的对象

  和引用的区别是,指针是对象,可以被更改。不必须初始化,尽管一般会初始化以规避一些问题的出现。

  1.指针在定义时,以*开头。赋值时需要使用取地址符(&)来得到某个对象的地址。在C++中,相同的符号,在不同的情况使用,意义不同,就像不同的符号。

    int val = 0;

    int *p = &val; //p存放val的地址, 即 p是指向val的指针。指针类型一般必须和指向的对象类型完全一致。

  2.如何通过指针来得到指针指向的对象的值,以及改变该对象的值?如何获取指针中的地址?

    可以用解引用符(*)获取指针指向的对象的值,给解引用的指针赋值,就是给被指针指向的变量赋值。

    直接获取指针的值,就是获取指针存放的地址。

    

    

储存常量地址的指针,必须使用指向常量的指针(pointer to const)

const int num =0; 

const int *p = # //底层const

但是常量指针可以指向非常量的对象。(不变的是指针所存放的地址,而不是指针指向的对象)

double pi = 3.14159;
double *const pd = π//顶层const,不可以修改指针的值
pi = 1.26;//ok。
*pd = 3.14;//ok, 指向非常量对象的指针可以用来修改对象的值

顶层const和底层const的区别究竟在哪里?

   int num = 3;
const int *p_i = # //底层const,不代表它指向的值一定是const.
num = 2;//ok,*p_i ==2 now
//*p_i = 1;//wrong ,不可通过底层const指针修改指向的对象的值。
int num2= 3;
p_i = &num2;//底层const指针可以重新赋值其他地址。
int *const p_t = &num2;
//p_t = #//wrong,read-only 不可以修改顶层指针的地址。
*p_t = 1;//ok,可以通过顶层指针修改对象的值。
const int *const p_m = &num2;
//*p_m = 1;//wrong ,底层+顶层const指针。
int *p_w;
p_w = p_t;//ok,顶层指针可以被赋值给普通int指针。
//p_w = p_i;//wrong ,底层指针不可以被赋值给没有底层const资格的指针

最新文章

  1. (转)C# 选择正确的集合
  2. JavaScript (If...Else和Switch和循环遍历) 语句以及常用消息框
  3. 获取ip ,百度地图坐标点 和 在 后台调用 url()
  4. Java序列化格式详解
  5. C++ 动态数组实例
  6. 如何将消息发送给Whatsapp联系人
  7. Sql 字符串替换
  8. 用视频编辑软件打不开jpg格式的图片的解决方法
  9. poj 3692 二分图最大匹配
  10. VIM 选择多行,复制粘贴
  11. Beyond REST: How to build a HATEOAS API in Java with Spring MVC, Jersey (JAX-RS) and VRaptor
  12. Arrays.sort源代码解析
  13. 调用数据库过程函数mysql
  14. HDU 4349 Xiao Ming's Hope
  15. ansible尝试
  16. ==、equals、hashCode区别?
  17. 引导图滤波(Guided Image Filtering)原理以及OpenCV实现
  18. 理解es6中的const与“不变”
  19. [ZZ]39条更好的软件开发方法
  20. pandas numpy处理缺失值,none与nan比较

热门文章

  1. 模拟浏览器与服务器交互(简易TomCat框架)
  2. IDEA 上传项目到 Gitee 小记
  3. K8S 实用工具之一 - 如何合并多个 kubeconfig?
  4. angular js 实现模糊查询并分页
  5. CISCO--配置单臂路由+DHCP
  6. Cookie解码编码
  7. 【易语言】exui超级列表框使用方法
  8. MySQL(2): 窗口函数\备份与恢复\性能优化\权限管理
  9. vue组件自调用
  10. home条 防止误碰