const关键字

const修饰指针 

    // const修饰指针有三种情况:
    // 1、const修饰指针 --常量指针    特点:指针的指向可以修改,但是指针指向的值不可以改 
    // 2、const修饰常量 --指针常量    特点:指针的指向不可以修改,但是指针指向的值可以该 
    // 3、const即修饰指针,又修饰常量 特点:指针的指向和指针指向的值都不可以改 

    其中,const修饰什么,什么就不再可改。

#include 

using namespace std;

int main(){
	
	// const修饰指针有三种情况:
	// 1、const修饰指针 --常量指针    特点:指针的指向可以修改,但是指针指向的值不可以改 
	// 2、const修饰常量 --指针常量    特点:指针的指向不可以修改,但是指针指向的值可以该 
	// 3、const即修饰指针,又修饰常量  特点:指针的指向和指针指向的值都不可以改 
	
	int a=10,b=20,c=30;
	
	// 1、常量指针 
	const int *p1 = &a;
	
	// 2、指针常量
	int * const p2 = &b;
	
	// 3、修饰常量
	const int * const p3 = &c; 
	
	cout << "p1 = " << p1 << endl;
	cout << "*p1 = " << *p1 << endl;
	cout << "p2 = " << p2 << endl;
	cout << "*p2 = " << *p2 << endl;
	
	/* 此时可以直接修改变量的值,只是不可以修改常量指针的值 */
//	*p1 = 12; // error
	p1 = &b;  // right
	b = 21;	
		
	/* 此时可以直接修改变量的值,也可以修改常量指针的值--但是不可以修改指针的指向*/
//	p2 = &a;  // error
	*p2 = 22; // right
	
	/* 此时可以直接修改变量的值--不可以修改常量指针的值,不可以修改指针的指向*/
//	p3 = &a; // error
//	*p3 = 50; //error
	
	cout << "p1 = " << p1 << endl;
	cout << "*p1 = " << *p1 << endl;  
	
	system("pause");
	return 0;
} 

const修饰结构体

const用来修饰结构体时和修饰指针的作用一样,是为了防止使用结构体时的误操作。

下面进行代码示例:

#include 
#include 
#include 

using namespace std;

struct Student{
	
	string name; // 姓名 
	int age;	 // 年龄 
	int score;	 // 成绩 
	
}; 

// 使用指针传递,可以减少内存的开销 
// 使用const修饰,防止误操作 ---- const使用场景 
void printS(const Student *Stu){  // 加const防止函数体中的误操作 
	
	//Stu->score = 100; // 操作失败,因为加入了const修饰 
	cout << "name: " << Stu->name << " age: " << Stu->age << " score: " << Stu->score << endl; 
	
}

int main(){
	
	// const来修饰为只读状态,防止误操作 
	
	Student Stu1 = {"Luck", 18, 79};
	
	cout << "打印前score:" << Stu1.score << endl; 
	
	// 使用函数打印stu1的内容 
	printS(&Stu1);
	
	cout << "打印后score:" << Stu1.score << endl; 
	 
	system("pause");
	return 0;
}

本笔记是用来记录自己学习过程中遇到的问题,如果错误还请多多见谅,若能指出,十分感谢!

你可能感兴趣的:(C/C++)