在结构体这样的一个特殊类型中,如果里面的数据庞大,使用值传递是非常占内存的。而用地址传递的话又会发生误操作(修改)数据的问题。此时可以通过 const 关键字进行修饰。这样一来如果发生误操作,编译器将会报错并进行提醒。

#include <iostream>
#include <string.h>
using namespace std;
struct Student{
    string name;
    int age;
    int score;
};
void printStudent(const Student * student){
    //编译器报错,不允许修改
    student->name = "张三";
    
    cout << "姓名:" << student->name <<endl;
    cout << "年龄:" << student->age <<endl;
    cout << "成绩:" << student->score <<endl;
}
int main(){
    Student student = {"陈陈菌",20,99};
    Student * studentp = &student;
    printStudent(studentp);
    return 0;
}