頂層const和底層const

2021-07-25 21:52:11 字數 977 閱讀 6825

頂層const:本身是乙個常量

底層const:所指的物件是乙個常量

int *const p1 = &i;
const修飾p1,p1本身是乙個const,所以這個const是頂層const

const

int ci = 42;

const修飾ci,ci本身是乙個const,頂層

const

int *p2 = &ci;

const修飾*p2,修飾的是p2所指的物件,所以是乙個底層const

const

int *const p3 = p2;

第乙個const修飾*const p3,為const p3所指的物件,所以為底層

第二個const修飾p3,則p3本身為const,這個const為頂層const

限定符constexpr只對指標有效,與指標所指的物件無關

const

int *p = nullptr;

const修飾p所指的物件,所以為底層const

constexpr

int *q = nullptr;

由於constexpr只修飾指標,所以q為乙個常量,故為頂層const

typedef

char *pstring;

const pstring cstr = 0;

const修飾cstr,cstr本事為乙個常量,所以為乙個頂層const

不能將型別別名替換成原來的樣子

const

char *cstr = 0;

此時const修飾cstr所指的物件,這時的const是乙個底層const,而用型別別名所定義的是乙個頂層const

頂層const和底層const

1.頂層 const 與底層 const概念 指標本身是乙個物件,因為,指標實際對應著記憶體單元的一段儲存空間,然而,指標所指向的也是乙個資料物件,因此,指標是乙個常量與指標所指向的是乙個常量是兩個完全不同的概念,頂層 const表示的是指標本身是乙個常量,底層const 表示的是指標所指的物件是乙...

頂層const和底層const

今天讀到函式這章,發現又說到了頂層 高層 const和底層 低層 const,然而自己對他們還是一知半解,就重讀了有關這一部分的知識。感覺自己已經理解了,總結一下。首先這裡是書中的原話 用名詞頂層const表示指標本身是乙個常量 用名詞底層const表示指標所指的物件是乙個常量。我們知道const是...

頂層const和底層const

清晰一組概念 首先只有指標才存在頂層與底層const之別 引用也可以算有 引用的本質是指標.然後簡述下const的用法 const修飾的型別 首先看const前面是否有型別 type 如果有就是修飾前面的type否則向後看。例項 const int a const 修飾int int const a...