引用 指標與const修飾符總結

2021-07-02 11:51:25 字數 1579 閱讀 1471

引用就是變數的乙個別名,對同乙個儲存單元起了兩個不同的名字。

引用在定義時必須進行初始化,而且必須用同型別的物件進行初始化。如下面的例子所示:

int ival = 1024;

int &refval = ival; // ok

int &refval2; // error

int &refval3 = 10; // error

int i = 42;

const int &r = 42; // ok

const int &r2 = r+i; // ok

double dval = 3.0;

const int &ri = dval; // ok

指標的定義就不羅嗦了,主要關注一下、指標的可能取值、指標的初始化、void*指標、指標的下標操作、const與指標的結合

int ival = 1024;

int *pi3 = 0; //3

int *pi1 = &ival; //1

另外需要注意,雖然指標可以不必在定義的時候初始化,但是一定要避免使用未初始化的指標。

指標的初始化

int ival = 0;

const int c_ival = 0;

int *pi = c_ival; // ok

pi = 0; // ok

pi = ival; // error

void*指標的操作十分有限:1 與另乙個指標進行比較;2 作為函式的返回值或者引數型別;3 給另乙個void*指標賦值。典型用法如下:

int i = 3;

int *pi = i;

void *pv = &i; //ok

pv = pi; // ok

指標的下標操作如同陣列,但需注意不要對非法位址進行解引用。

指標與const的結合有兩種方式:1 指向const物件的指標;2 const指標。定義如下:

int i = 10;

const int *pi;

int const* pic = &i; // 必須在定義時對const指標進行初始化,就像對待const物件以及const引用一樣

指向const物件的指標是指該指標自以為指向了const物件,因此可以用同型別的const物件或者非const物件對其進行初始化。但是不能通過該指標來對指向的物件進行修改。但可以更改該指標指向的物件。

const指標則必須在定義時初始化。並且不能重新指向同型別變數,即使是自己也不可以。(詳見《c++ primer》第四版111頁)

另外需要注意,如下的**表示的是const指標而非指向const物件的指標:

typedef int *pint;

const pint cint;

這裡,typedef不是簡單的文字擴充套件。const修飾的pint,而pint是指標。

const修飾符和指標

char const cpp1 null cpp1 char cp1 cp1 char c1 cpp1是乙個常量指標,所以cpp1需要在定義的時候初始化,它指向乙個char 型的指標cp1。char const cpp2 cpp2 char const cp2 const cp2 char c2 c...

C C 中const修飾符總結

c c 中的const是乙個修飾符,它允許你指定乙個語義上的約束,也就是可以通過const指定乙個 不該被改動 的物件,而編譯器會強制實施這項約束。const語法很多 但都不複雜 下面我將分別講述各種語法及其作用。在講述const修飾符用在指標上有什麼效果之前先來看下指標不加const修飾符的情況 ...

對於const修飾符的總結

例如 const int a 10 這將使得a的值為乙個常量,後面無法改變,需要注意 使用const修飾的變數必須被初始化const int a 這樣的 會使得編譯失敗。int a 10 const int b a 使用const修飾的引用將無法改變引用物件的值,即類似 b 5 這樣的 會使得編譯失...