C++ 在形参里加const有什么意义?

/*在形参里加const有什么意义吗?是不是代表这个参数不能在函数里被修改?那为什么在下面的程序中,在print函数输出的还是修改后的对象呢?望大神们指点迷津!谢谢!*/

#include <iostream>
#include"string.h"
using namespace std;

    struct Student{
        char name[20];
        unsigned int id;
        char sex;
        unsigned short age;
    };

    void print(const Student &stu)//加不加const的区别在哪?
    {
        cout<<stu.name<<endl;
        cout<<stu.id<<endl;
        cout<<stu.sex<<endl;
        cout<<stu.age<<endl;
    }

    void set(Student &stu)
    {
        strcpy(stu.name,"Jane Green");
        stu.id=1;
        stu.sex='F';
        stu.age=20;
    }

    int main(int argc, char* argv[])
    {
        Student a={"John Smith",2,'M',21};
        set(a);
        print(a);
        return 0;
    }

你说对了一半,具体说的是不能在你在该变量前加了const的函数内被修改,你const加在输出函数上,又不是在set函数里,当然可以被修改啊,其实你想的是另外一种东西,const常量定义,比如const int N=10,这个确实在任何地方都不可以修改,把const引用参数和const常量定义搞清楚就好

不能修改stu对象里的成员
如果你函数里写
stu.id = 1;
就不允许。

const仅保证在print函数中不能对参数进行改变

set函数中可以修改(没有const),print函数中不能修改(有const)。