您的位置:首页 > 编程语言 > C语言/C++

imooc 学习总结——离港篇:C++之const关键字

2017-03-12 12:13 281 查看

Const——控制数据的类型

1.const与基本数据类型

int x = 10;//x是变量,之后x的值可以改变
const int x = 10;//x是一个常量,x的值不可变


2.const与指针类型

几种const修饰指针表量的形式

const int *p=NULL;
int const *p=NULL;  //两个表达式是完全等价的

int * const p=NULL; //这个则与前两个不同


const int * const p = NULL;
int const * const p = NULL; //两个表达式完全等价


例1

int x =3; const int *p = &x;
//p = &y;正确   // *p = 4;错误


变量存储地址存储内容
x&x3
p&p&x
解释:const 修饰的是变量*p,所以*p的值不可以改变但p的值可以改变。

例2

int x =3; int const  *p = &x;
//p = &y;错误


变量存储地址存储内容
x&x3
p&p&x不可改变
解释:const 修饰的是变量p,所以p的值不可以改变。

例3

const int x =3; const int * const p = &x;
//*p = 4; p = &y;都是错误的


变量存储地址存储内容
x&x3不可改变
p&p&x不可改变
解释:const int * const p = &x; 则 p不能zhixiang

3.const与引用

例1

int x =3; const int &y = x;
// x = 10; 正确 //y = 20;错误


变量存储地址存储内容
x&x3
解释:const修饰变量y,所以修改y的值不行,但可以修改x的值。

例2

const int x = 3; x = 5; false
int x = 3; const int y = x; y = 5; false
int x =3; const int *y = &x; *y = 5; false

int x = 3,z = 4; int * const y = &x; y = =&z false
const int x = 3; const int &y = x; y = 5; false

// 对比
(1)const int x = 3; int *y = &x; false
// x是一个常量,但用一个指针变量指向这个常量,则可能通过指针变量改变常量,计算机不允许,所以不通过。
(2)int x =3; const int *y = &x; true


const 能控制一个变量为常量,它与define不同的是,编译时系统并不会发现define的语法错误,所以更提倡用const定义常量。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: