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

C++ const关键字

2015-10-06 11:23 281 查看
const与普通变量

普通的变量

例如, int x = 3;

变量名是x, 变量地址是&x, 变量值是3;

const变量

例如, const int x = 3;

变量名是x, 变量地址是&x, 变量值是3,但是变量值不能改变;

const与指针类型

const int *p = NULL;

int const *p = NULL;

以上两种形式的写法完全等价

const int *const p = NULL;

int const *const p = NULL;

以上两种写法完全等价

int x = 3;
int y = 4;
const int *p = &x; //x本身可读可写,但是指针p只能读取x的值,不能修改
p = &y; //正确
*p = 4; //错误,因为const修饰的是*p
int x = 3;
int y = 4;
int *const p = &x;
p = &y; //错误,因为const修饰的是指针p,所以指针p不能改变
*p = 4; //正确

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

const与引用
int x = 3;
const int &y = x;
x = 4; //正确
y = 4; //错误

const作为函数参数

#include<iostream>
using namespace std;
void fun(const int &a, const int &b)
{
a = 10;
b = 20;
}
int main()
{
int x = 3;
int y = 5;
fun(x, y);
cout << x << y << endl;
return 0;
}

以上代码会在函数内部报错,因为a和b作为不可变的引用不能被赋值,这样做的好处是防止形参影响实参的值,以免发生混乱。
错误用法总结
const int x = 3;
x = 5; //错误,因为const修饰的x的值不能改变

int x = 3;
const int y = x;
y =5; //错误,const修饰的y不能改变

int x =3;
const int *y = &x;
*y = 5; //错误,*y被const修饰,不能改变

int x =3;
int z = 4;
int *const y = &x;
y = &z; //错误,y本身被const修饰,不能改变

const int x =3;
const int &y = x;
y = 5; //错误,因为引用y被const修饰,不能改变

const int x = 3;
int *y = &x; //错误,因为用一个可变的指针指向一个不可变变量,风险太大
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++