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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章