這種例子在我們平時程式設計時可能會很少用,但是在面試時被問的可能性就很大了。
用const修飾指標,常見的情況可以分為四種:
1.const int *p; // p 可變,p 指向的物件不可變
2.int const *p; // p 可變,p 指向的物件不可變
3.int *const p; // p 不可變,p 指向的物件可變
4.const int *const p; //指標p 和p 指向的物件都不可變
可以看到,這四種情況面對的問題是p的值和p指向的值是否可以修改。
下面,我給出乙個例子,在例子中已經給出了詳細的注釋:
#include using namespace std;int main(void)
這下是不是明白了很多,但是,這樣不好記啊,好吧,我現在講下應該怎麼去記下這些東西。
其實,我們需要做的並不是刻意記住每一種寫法代表的是什麼,這樣太累了,我們需要做的是好好觀察:
這裡,觀察的方式是「就近原則」,是觀察 const 和誰的位置比較近,因為 const 修飾的不能改變的變數,所以,離 const 近,那麼它就是不可改變的變數。
1.const int *p; // p 可變,p 指向的物件不可變
這裡,const 和 *p 最近 ,所以,*p 就是不可改變的,也就是值是不可改變的,p 的位址是可以改變的。
2.int const *p; // p 可變,p 指向的物件不可變
這裡,const 還是和 *p 最近,所以,是和第一種情況是一樣的。
3.int *const p; // p 不可變,p 指向的物件可變
這裡,const 和 p 最近,所以,情況就改變了,正好和前兩種情況相反,p 的位址是不能改變的,而p 指向的物件是可以變的。
4.const int *const p; //指標p 和p 指向的物件都不可變
這下就簡單的,const和 *p 和 p 都是最近的,所以,這兩個都是不能改變的。
說完了這些,是不是對const修飾指標很明白了!
指標修飾C語言const修飾符探秘指標修飾
ps 今天上午,非常鬱悶,有很多簡單基礎的問題搞得我有些迷茫,哎,幾天不寫就忘。目前又不當coo,還是得用心記 哦!c言語是我接觸的第一門序程設計言語,時當還很傻很無邪,後來敏捷被各種高階言語 但是不得不說,c的位置真的無可撼動。const修飾符在c言語中很用常,但是近最讀 的時候常常搞不清楚,索搜...
const修飾指標
1.指向const資料的非const指標 const int countptr 這個宣告從左到右讀,countptr 是乙個指向整數常量的指標 2.指向非const資料的const指標 int const ptr x 這個ptr指標就是const指標,宣告為const的指標必須在宣告時進行初始化。指...
const修飾指標
書寫形式為 int countptr 特點 指標的指向可以被修改,指向的資料可以被修改 includeint main 書寫形式為 const int countptr 特點 指標的指向可以被修改,指向的資料不能被修改 includevoid func const int int main void...