const修饰指针
// const修饰指针有三种情况:
// 1、const修饰指针 --常量指针 特点:指针的指向可以修改,但是指针指向的值不可以改
// 2、const修饰常量 --指针常量 特点:指针的指向不可以修改,但是指针指向的值可以该
// 3、const即修饰指针,又修饰常量 特点:指针的指向和指针指向的值都不可以改
其中,const修饰什么,什么就不再可改。
#include <iostream>
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 <iostream>
#include <string>
#include <stdlib.h>
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;
}
本笔记是用来记录自己学习过程中遇到的问题,如果错误还请多多见谅,若能指出,十分感谢!