C++ 中指针常量、指向常量的指针、引用类型的常量

命题1. 在C++ 中 const T a 与 T const a 是一样的, 表示a是一个T类型的常量 。
测试:

C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图
一、 形参定义为引用类型的常量
在函数传参时 , 形参若定义为 const T& x  , 则表示实参是一个引用类型 , 并且无法在这个函数中更改x的值 。由命题1知 , 它等价于 T const& x。
在不同的书中可能会有不同的写法:
C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图

C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图

C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图
测试:
C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图
 
C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图

C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图

C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图
二、指向常量的指针与指针类型的常量
指向常量的指针定义为 const T *p , 表示 p是指向常量的指针 , p也可以指向变量 , 但是通过p只能访问所指地址的值 , 而不能修改 。
C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图
 
C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图

指针常量的定义为 T *const p = &x , 指针常量也是指针 , 它可以指向一个变量 , 也可以修改变量的值 , 但由于它本身是常量 , 所以p只能指向一个地址 , 不能在初始化之后再指向其他地址 。
C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图

C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图

C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图

C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图
注意: 1.  const *T p 是错误的
C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图

C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图
  2. T *const p 与 T const* p不等价 , 前者表示指针类型的常量 , 后者是指向常量的指针 。(根据命题1 , T const* p == const T* p 都是指向常量的指针)

C++ 中指针常量、指向常量的指针、引用类型的常量

文章插图
这里要对A中的数据进行复制 , 为了避免修改A中的数据 , 将形参定义为指向常量的指针 , 在函数中只能访问A中的数据而不能修改 。
好吧 , 写到这里我自己都要晕了 , 拜托各位设计语言的大佬还有写书的大佬还有出题的大佬手下留情啊!!!!
【C++ 中指针常量、指向常量的指针、引用类型的常量】

    经验总结扩展阅读