在c++中使用指针访问结构体函数出错

在学习c++的时候使用指针来访问结构体函数的时候使用不了->来访问指针变量的值,想问一下大家这是怎么回事
#include<iostream>
using namespace std;
#include<string>

struct Student
{
    string name;
    int age;
    int scrore;
}s2={"张三",56,78};

void HanShu(struct Student *p);

void HanShu(struct Student * p)
{
    cout << "  姓名: " << s2->name << endl;
}
int main()
{
    /*2.地址传递(用指针)*/
    HanShu(&s2);
    system("pause");
    return 0;
}

img

上面这是错误信息,我在第16行s2后面输入->的时候下面有红线,为什么不能用这个指针呢?想请教一下大家。谢谢

另外想问一下大家为什么结构体定义的这个s2必须在函数前面啊,我在主函数里面定义的时候访问函数显示未定义的s2,这又是什么问题呀。

你定义的指针不是叫p吗?p->name

img