C++ 中指針常量、指向常量的指針、引用類型的常量

  命題1. 在C++ 中 const T a 與 T const a 是一樣的, 表示a是一個T類型的常量。

  測試:

  

  一、 形參定義為引用類型的常量

  在函數傳參時,形參若定義為 const T& x ,則表示實參是一個引用類型,並且無法在這個函數中更改x的值。由命題1知,它等價於 T const& x

  在不同的書中可能會有不同的寫法:

 

 

 

 

 

   測試:  

  

 

   

 

   

 

   

 

 

   二、指向常量的指針與指針類型的常量

  指向常量的指針定義為 const T *p , 表示 p是指向常量的指針,p也可以指向變量,但是通過p只能訪問所指地址的值,而不能修改。

  

 

    

 

   

  指針常量的定義為 T *const p = &x , 指針常量也是指針,它可以指向一個變量,也可以修改變量的值,但由於它本身是常量,所以p只能指向一個地址,不能在初始化之後再指向其他地址。

  

 

   

 

   

 

   

 

 

  注意: 1.  const *T p 是錯誤的

      

 

       

 

       2. T *const p 與 T const* p不等價,前者表示指針類型的常量,後者是指向常量的指針。(根據命題1,T const* p == const T* p 都是指向常量的指針)

    

 

 

   這裡要對A中的數據進行複製,為了避免修改A中的數據,將形參定義為指向常量的指針,在函數中只能訪問A中的數據而不能修改。

 

 

   好吧,寫到這裡我自己都要暈了,拜託各位設計語言的大佬還有寫書的大佬還有出題的大佬手下留情啊!!!!

Tags: