對於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 程式設計師?你還在用面向過程的思維考慮問題。乙個設計良好的電燈泡類必然封裝了換燈泡的方法,所以你要做...
關於程式設計師
這篇隨筆主要記錄下我現階段對於程式設計師工作的解讀。為什麼招聘的時候那麼多公司要有經驗的。經驗,我覺得對於程式設計師來說,其實就是積累。計算機程式設計技術萬千,知識點更是數不勝數。公司招聘其實就是要有知道足夠知識點的。而這正是印證每個程式設計師都是乙個知識寶庫的事實。當你積累的越多,你的寶庫就越大,...