C++中const的使用

1.const修饰变量

1.1 先搞清楚四个概念:

常量:值不可以修改。(不可改)
指针常量:即指针不可改变指向,但是可以改当前指向内存的内容。(可改不可动)
指向常量的指针:虽然说指向常量,实际指向的数据可以通过赋值语句修改,只是不可以通过该指针修改内容,属于“只读”指针,当然指针可以改变指向。(可动不可改)
指向常量的指针常量:指针不可以改变指向,也不可以修改当前指向内存的内容。(不可动不可改)

1.2 写法规则

const修饰变量时:
(1)只有一个const,如果const位于*左侧 --> 指向常量的指针
(2)只有一个const,如果const位于*右侧 --> 指针常量
(3)两个const,*左右各一个 --> 指向常量的指针常量

int i = 5;
// 常量
const int c = 99;
int const d = 99;
//c = 88;			//错
//d = 100;			//错

//指针
int* p1 = &i;

// 指针常量(在指针标识符前加const)
int* const p2 = &i;
//p2 = &c;		//错
*p2 = 2;		//对

// 指向常量的指针(把const放到*或者类型之前)
int const* p3 = &i;
const int* p4 = &i;
//const * int a = &i;  //不存在,错误写法
p3 = &c;		//对
//*p3 = 99;		//错

// 指向常量的指针常量
int const* const p5 = &i;
const int* const p6 = &i;
//p5 = &c;		//错
//*p5 = 100;		//错

2.const修饰函数参数

传递过来的参数在函数内也是不可以改变的,例如:

void fun(const int a){
    a = 1;   //出错
}

3.const修饰函数返回值

#include<iostream>
using namespace std;

const int *fun() {
	int b = 2;
	return &b;
}

int main()
{
	const int *a = fun();//指向常量的指针,可动不可改
	//int *a=fun();      //编译错误,类型必须一致
	cout << *a << endl;//2
	int c = 88;
	a = &c;//可动
	//*a = 3;//不可改
	cout << *a << endl;//88

	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章