const與指標 引用

2022-06-01 03:57:10 字數 1469 閱讀 4511

定義乙個指標*p:

const

int* p =null;

intconst* p =null;

int* const p = null;

上面兩行定義完全等價,第三行則不同。

下面兩行定義也完全等價:

const

int* const p =null;

intconst* const p = null;

舉例說明:

int x = 3

;const

int* p = &x;

//p=&y; 正確

//*p=4; 錯誤

const修飾的是*p,所以通過*p修改x的值是錯誤的。

int x = 3

;int* const p =null;

//p=&y; 錯誤

const修飾的是p,p只能指向乙個位址,不能再改變。

const

int x = 3

;const

int* const p = &x;

//p=&y; *p=4; 都是錯誤的

上面這種情況,就不能再做任何修改。

int x = 3

;const

int& y =x;

//x=10; 正確

//y=20; 錯誤

y被const修飾,所以不能通過y去修改x的值。

const

int x = 5

;x = 5; //

錯誤int x = 3

;const

int y =x;

y = 5; //

錯誤int x = 3

;const

int* y = &x;

*y = 5; //

錯誤

int x = 3, z = 4

;int* const y = &x;

y = &z; //

錯誤const

int x = 3

;const

int& y =x;

y = 5; //

錯誤

const

int x = 3

;int* y = &x; //

錯誤int x = 3

;const

int* y = &x; //

正確

上面這個示例,前者x是不可變的,而y是可變的,如果我們定義乙個可變的指標指向乙個不可變的變數,那麼這就意味著存在風險,我們可以通過指標去修改x的值,這種情況編譯器是不允許存在的,所以錯誤;對於後者,指標只有讀許可權,x則有讀和寫的許可權,我們用乙個許可權小的物件接受乙個許可權大的物件這是允許的,而用乙個許可權大的物件接受乙個許可權小的物件則不允許。

const, 引用與指標

const int bufsize 512 對const的引用 簡稱為 常量引用 const int ci 1024 常量 const int r1 ci 對常量的引用 常量引用,不允許通過r1修改ci不能通過引用來改變它所繫結的值 double dval 3.14 const double rd ...

const 引用與指標

希望這是最後一次修頂這篇essay了,之前寫的兩次都有些小毛病。打臉,又來更新了。ps 右值指的是字面常量和表示式求值過程中建立的臨時變數。我們忽略掉了相同型別是否可以賦值的情況 我到現在的學習裡都還可以相互賦值 以及型別相容的情況。只考慮const 等修飾符帶來的影響 型別相容 const 底層c...

指標 與 引用 還有const

指標 先定義乙個int型別的a,然後定義乙個指標p 指向 a 的位址 再定義乙個指向a的二重指標q,指向p的位址。int a 10 int p a int p p a so p 10 p a cout a is a cout p is cout p is p cout p is p int q a ...