const
int bufsize = 512;
「對const的引用」簡稱為「常量引用」
const
int ci = 1024; //常量
const
int &r1 = ci; //對常量的引用 --> 常量引用,不允許通過r1修改ci
不能通過引用來改變它所繫結的值
double dval = 3.14;
const
double &rd = dval; //不允許通過rd來修改dval
const
double pi = 3.14;
const
double *cptr = π //不能通過cptr改變pi的值
可以將上式看做const double* cptr
,const
鎖住double* cptr
, 即指標指向的為常量
指向常量的指標,指向常量的引用可以看做指標/引用的自律性,不通過指標/引用來修改指向/繫結的物件。但並不能保證物件不通過其它途徑被修改。
int ival = 5; //可以修改
const
int &ri = ival; //ri'承諾'不修改ival
const
int *pi = &ival; //pi'承諾'不修改ival
int errnum = 0;
int *const curerr = &errnum; //指標是常量
可以將上式看做int* const curerr
,const
鎖住curerr
, 即指標為常量
const
double pi = 3.14;
const
double *const pip = π //pip為常量指標, 同時指向乙個常量
後乙個const表明pip不允許被修改,前乙個const表明指向的值不允許被修改。
指標是乙個物件,但引用不是物件,因此存在const指標,但不存在const引用。
頂層const表示物件為常量
底層const表示所指物件為常量
int i=0;
int *const p1 = &i; //頂層指標
const
int *p2 = &i; //底層指標
拷貝時,拷入與拷出物件必須具有相同的底層const資格。但頂層const無影響。 const與指標 引用
定義乙個指標 p const int p null intconst p null int const p null 上面兩行定義完全等價,第三行則不同。下面兩行定義也完全等價 const int const p null intconst const p null 舉例說明 int x 3 con...
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 ...