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

    推薦閱讀