ex. const double = 3.14;
const在指標(pointer)使用中可以表明指標指到data是const or 指標本身是const or 兩者都是
[1] char *p = "Qoo"; /* non-const pointer, non-const data */
[2] const char *p = "Qoo"; /* non-const pointer, const data */
[3] char* const p = "Qoo"; /* const pointer, non-const data */
[4] const char* const p = "Qoo" /* const pointer, const data */
關鍵在於:*與const的前後關係!當const出現在*的左邊(const *),則表示pointer指到的data為常數;反之如果const出現在*的右邊(* const),則表示指標本身是常數
所以在[2]
*p = 10; /*錯誤*/
*(p + 2) = 1; /*錯誤*/
在[3]
*p = 2; /*可以*/
*(p+1) = 10; /*可以*/
p++; /*不可以*/
事實上,在The C++ Programming Language中有提到一個簡單的要訣:由右向左讀!!
所以
[2] p is a pointer that point to char, which is const
[3] p is a constant pointer point to char
[4] p is a constant pointer point to char which is const
用const是其中一種固定變數值的方法,但更常用的是用#define。一來可以讓程式碼簡潔,二來可以配合macro,用一個簡單的指令替代多個步驟
沒有留言:
張貼留言