(1)const int *p; int const *p2;
#include #include #include using namespace std;
int main()
*p = 5;
報錯:error: assignment of read-only location '* p'
*p2 = 5 ;
報錯:error: assignment of read-only location '* p2'
(2)int *const p3
#include #include #include using namespace std;
int main()
int *const p3;
報錯:error:uninitialized const 'p3' 沒有對p3進行初始化。
p3 = &b;
*p3 = 8;
*p3是變數,可以更改指標p3指向的值。
(3)const int *const p3
#include #include #include using namespace std;
int main()
int *const p3;
報錯:error:uninitialized const 'p3' 沒有對p3進行初始化。
p3 = &b;
*p3 = 8;
報錯:error: assignment of read-only location '* (const int*)p' *p3是常量,不可以更改指標p3指向的值。
具體總結:
int* p = 4; //non-const pointer,non-constdata
const char* p = &p; //non-constpointer,const data;
char* const p = &p;//constpointer,non-const data;
const char* const p = &p; //constpointer,const data;
關於定義的閱讀,一直以為這段解釋很不錯了已經,即以*和const的相對位置來判斷:
const語法雖然變化多端,但並不莫測高深。如果關鍵字const出現在*左邊,表示被指物是常量;如果出現在*右邊,表示指標自身是常量;如果出現在*兩邊,表示被指物和指標兩者都是常量。
如果被指物是常量,有些程式設計師會將關鍵字const寫在型別之前,有些人會把它寫在型別之後、*之前。兩種寫法的意義相同,所以下列兩個定義相同:
const widget* w;
widget const* w;
其實很簡單,const和*的優先順序相同
且是從右相左讀的,即「右左法則」
其實const只是限定某個位址儲存的內容不可修改
比如int*p;讀作p為指標,指向int,所以p為指向int的指標
int*const p;讀作p為常量,是指標,指向int,所以p為指向int的常量指標, p不可修改
int const *p;p為指標,指向常量,為int,所以p為指向int常量的指標, *p不可修改
int ** const p; p為常量,指向指標,指標指向int,所以p為指向int型指標的常量指標,p不可修改
int const**p; p為指標,指向指標,指標指向常量int,所以p為指標,指向乙個指向int常量的指標, **p為int,不可修改
int * const *p ; p為指標,指向常量,該常量為指標,指向int,所以p為指標,指向乙個常量指標,*p為指標,不可修改
int ** const *p; p為指標,指向常量,常量為指向指標的指標,p為指標,指向常量型指標的指標,*p為指向指標的指標,不可修改
int * const **p; p為指標,指向乙個指標1,指標1指向乙個常量,常量為指向int的指標,即p為指標,指向乙個指向常量指標的指標, **p為指向乙個int的指標,不可修改
面試題 指標
一 指標 1 利用指標實現兩數交換 include using namespace std void swap1 int p,int q void swap2 int p,int q void swap3 int p,int q void swap4 int p,int q void swap5 i...
面試題 關於指標
面試題 下列c 程式會在哪一行崩潰?struct s main 分析 int p s.i時,一直到p 0 4,p 1 3的時候,p始終等於 s.i。s.p p 建立了如下的關係 s.p存了p的值,也即 s.i,s.p 1 相當於 s.i 1 即s.i的位址加1.也就是s.p.s.p 1 和s.p其實...
面試題 指標 引用
返回目錄 問題 問 引用與指標有什麼區別?答 1.引用必須初始化,指標可以不用。2.引用初始化以後就不能被改變 即只能初始化一次,始終只指向指定的物件 而指標可以改變所指向的物件。3.不存在指向空值的引用,而指標可以指向乙個空值,即空指標。4.因為引用不能指向空值,這意味著使用引用之前不需要測試其合...