C++學習之路(1)?

Tags: 問題, 過程,

在學習C++的過程中會遇到一個頭大的問題,就是關於const int *a, int const *a,int * const a和const int * const a的徹底理解與辨析,下面分享下經驗

工具/原料

VS2012+win7

方法/步驟

const int *a這裡const 修飾的是int,而int定義的是一個整值,因此*a 所指向的物件值不能通過 *a 來修改,但是可以重新給 a 來賦值,使其指向不同的物件。

C++學習之路(1)

int *const a 這裡const修飾的是 a ,a代表的是一個指標地址,因此不能賦給a其他的地址值,但可以修改a指向的值,這有點和cont int *a相反。

C++學習之路(1)

int const *a 和 const int *a 的意義是相同的 他們兩個的作用等價。

C++學習之路(1)

const int * const a 這個代表a所指向的物件的值以及它的地址本身都不能被改變。

C++學習之路(1)

總結一下:const 是一個左結合的型別修飾符,它與其左側的型別修飾符和為一個型別修飾符,所以,int const *a 和 const int *a 意義相同,int const *a限定的是*a,不是a(也即a可變,*a不可變),同理,int *const a限定的是a,不是*a(也即a不可變,*a可變),清楚了吧!

C++學習之路(1)

C++ 你成功的不二選擇

C++學習之路(1)

注意事項

相關問題答案