#include<iostream>
#include<string>
using namespace std;
struct Student {
string name;
int age;
int score;
};
//地址传递-不复制新的副本,但容易修改原本的数据
//在指针前加上const,不可以通过解引用的方式对原始数据进行修改
void printstu(const Student* p) {
//p->age = 10;
cout << p->name << " " << p->age << " " << p->score << endl;
}
//值传递
void print2(Student p) {
cout << p.name << " " << p.age << " " << p.score << endl;
}
int main() {
//结构体中const的使用场景
Student s1 = { "kelly",20,100 };
printstu(&s1);
print2(s1);
system("pause");
return 0;
}
1. 值传递与地址传递:值传递会在内存空间中重新开辟一段空间,复制数据后,再进行输出;地址传递直接输出的是main函数中的原始数据。
2. const在结构体中的运用:如果在进行地址传递时,不加上const,可以通过指针直接对原始数据进行修改,很不方便。因此在结构提前加上const,表示常量(结构体类型)指针,不能通过解引用的方式对指针代表的地址内的数据进行修改,因此函数变成了只读函数。