码迷,mamicode.com
首页 > 其他好文 > 详细

指针和const

时间:2017-09-29 12:41:02      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:error   nbsp   col   def   不能   初始化   数据类型   clu   out   

指针指向常量,类似于常量引用,指向常量的指针(pointer to const)不能用于改变其所指对象的值;

const 指针,指针本身为常量(const pointer),必须 初始化,指针的值不能改变

typedef int *pint;类型别名

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

const pint *pi;          //pi是一个指针,它的对象是指向int的常量指针

不能将pint替换为int *

const int *cint = 0; //指向const int 的指针

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

 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 }

 

指针和const

标签:error   nbsp   col   def   不能   初始化   数据类型   clu   out   

原文地址:http://www.cnblogs.com/zlm-jessie/p/7610462.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!