拓展

结构体中const使用场景

#include <iostream>
#include <string>
using namespace std;

// 定义学生结构体
struct sd
{
    string name; // 名字
    int age;     // 年龄
    int test;    // 分数
};

void nout(struct sd s)           //输出结构体变量信息的函数
{
 cout<<"姓名 "<<s.name<<endl
     <<" 年龄 "<<s.age<<endl
     <<" 分数 "<<s.test<<endl;

}

int main(void)
{
    //创建结构体变量
    struct sd s= {"张三",18,90};

    //通过函数打印结构体变量的信息
    nout(s);

    return 0;
}

如果我们将函数中的性参改为指针,在人数多的情况下可以减少内存空间

#include <iostream>
#include <string>
using namespace std;

// 定义学生结构体
struct sd
{
    string name; // 名字
    int age;     // 年龄
    int test;    // 分数
};

void nout(struct sd *s)           //输出结构体变量信息的函数
{
 cout<<"姓名 "<<s.name<<endl
     <<" 年龄 "<<s.age<<endl
     <<" 分数 "<<s.test<<endl;

}

int main(void)
{
    //创建结构体变量
    struct sd s= {"张三",18,90};

    //通过函数打印结构体变量的信息
    nout(&s);

    return 0;
}

但这样有个安全隐患如果我在

void nout(struct sd *s)           //输出结构体变量信息的函数
{
 cout<<"姓名 "<<s.name<<endl
     <<" 年龄 "<<s.age<<endl
     <<" 分数 "<<s.test<<endl;

}

加上个

void nout(struct sd *s)           //输出结构体变量信息的函数
{
    s->age = 500;
 cout<<"姓名 "<<s.name<<endl
     <<" 年龄 "<<s.age<<endl
     <<" 分数 "<<s.test<<endl;

}

那么全部的"年龄"都会被修改

所以

我们就得在

void nout(struct sd *s)           //输出结构体变量信息的函数
{
 cout<<"姓名 "<<s.name<<endl
     <<" 年龄 "<<s.age<<endl
     <<" 分数 "<<s.test<<endl;
}

加一个

void nout(const struct sd *s)

这样就不可修改了只能读取,只要修改就报错对于长代码来说是一个莫大的帮助