程式設計師面試 3 關於const修飾指標的情況

2021-08-03 11:34:42 字數 1380 閱讀 1595

對於const修飾指標,一般有4中情況:

1. const int* a = &b;`

2. int const* a = &b;`

3. int *const a = &b;`

4. const int* const a = &b;`

重點

如果const位於*的左側,則const則用來修飾指標所指向的變數,即指標指向的變數為常量,不能通過指標改變常量在記憶體中的值;

如果const位於*的右側,則const則用於修飾指標本身,即指標為常量,不能對指標本身進行更改操作,但是,指標指向的內容不是常量; 舉例

1 & 2: const位於*的左側,指標內容為常量,但是,指標本身不為常量

int x = 100, y = 200;

const

int * p = &x; //或者 int const * y = &x;

*p = 400; //錯誤; y指向的整數x位址的內容為常量,不能為x所在位址重新賦值;

*p = &y; //正確,可以使p指向別處來改變指標內容;

改變指標內容:

int x = 400;

const

int * p = &x;

cout

<< *p << endl; //結果為400

x = 600;

cout

<< *p << endl; //結果為600

int x = 400, y = 500;

const

int * p = &x;

cout

<< *p << endl; //結果為400

p = &y;

cout

<< *p << endl; //結果為500

3: const位於*的右側,指標本身為常量,指標內容不為常量

int x = 500, y = 100;

int* const p = &x; //注意:**定義時必須初始化**

*p = &y; //可以更改p的值;

p++; //錯誤,不能對p本身進行更改;

4.指標內容及指標本身為常量

int x = 500;

const

int * const p = &x;

p++; //錯誤

*p = 400; //錯誤

程式設計師面試

1.內聯函式和巨集的差別 內聯函式要做引數型別檢查,這是內聯函式和巨集相比的優勢 2.指標和引用的區別 1 非空區別。乙個引用不能指向空值,必須指向乙個物件。指標可以為空。2 合法性區別。使用引用不用檢測其合法性,但指標必須先檢查是否合法。3 可修改區別。指標在初始化之後還可以修改其指向的內容,但是...

關於程式設計師

1 換乙個電燈泡需要幾個程式設計師?乙個也不要,這是硬體問題。2 換乙個電燈泡需要幾個微軟程式設計師?乙個也不要,他們會把黑暗變成標準,然後告訴每個人 我們就是這麼設計的。3 換乙個電燈泡需要幾個c 程式設計師?你還在用面向過程的思維考慮問題。乙個設計良好的電燈泡類必然封裝了換燈泡的方法,所以你要做...

關於程式設計師

這篇隨筆主要記錄下我現階段對於程式設計師工作的解讀。為什麼招聘的時候那麼多公司要有經驗的。經驗,我覺得對於程式設計師來說,其實就是積累。計算機程式設計技術萬千,知識點更是數不勝數。公司招聘其實就是要有知道足夠知識點的。而這正是印證每個程式設計師都是乙個知識寶庫的事實。當你積累的越多,你的寶庫就越大,...