指針和const

指針指向常量,相似於常量引用,指向常量的指針(pointer to const)不能用於改變其所指對象的值;ios

const 指針,指針自己爲常量(const pointer),必須 初始化,指針的值不能改變spa

typedef int *pint;類型別名指針

const pint cpint = 0; //cpint是指向int的常量指針code

const pint *pi;          //pi是一個指針,它的對象是指向int的常量指針對象

不能將pint替換爲int *blog

const int *cint = 0; //指向const int 的指針ci

const pint cpint = 0; //指向int的常量指針io

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int ival = 1024;
 6     int ival2 = 2048;
 7     const int cival = 4096;
 8 
 9     const int *pcint = &ival; //指向常量的指針
10     cout << *pcint << endl;   //1024
11 
12     pcint = &ival2;          //指針的值可改變,指向的值不能改變
13     cout << *pcint << endl;  //2048
14     //    *pcint  = 4096;           //error:不能給常量賦值
15     int *const cpint = &ival; //常量指針(指針爲常量)
16 //    cpint = &ival2;           //error:不能給常量賦值
17     *cpint = 4096;           // ok
18     cout << *cpint << endl;   //4096
19 
20     const int *const cpicp = &ival; //指向常量對象的常量指針(指針和指向的對象都是常量)
21 
22 //    cpicp = &cival;           //error:不能給常量賦值
23 //    *cpicp = 4096;            //error:不能給常量賦值
24 
25     typedef int *pint; //基本數據類型爲指針
26     const pint cint = &ival; //常量指針
27     cout << cint << endl;    //0043FC60
28     cout << *cint << endl;   //4096
29 
30     const pint cint2 = &ival2;
31 //    cint = cint2;             //error:不能給常量賦值
32     *cint  = 512;             // ok
33 
34 //    pint const pcint = &ival2; //error 重定義:不一樣的類型修飾符
35 
36     const pint *pi = &cint; // pi是一個指針,對象是指向int的常量指針
37     cout << pi << endl;     //0043FC18
38     cout << *pi << endl;    //0043FC60
39     cout << **pi << endl;   //512
40 }
相關文章
相關標籤/搜索