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++ 中指针常量、指向常量的指针、引用类型的常量】

    推荐阅读