访问成员

#include <iostream>
using namespace std;

/*
 访问成员
 有两种类型
 实例变量:Student stu,stu是实例变量,则用成员访问符号 . (点)
 指针变量:Student *p,p为结构体指针变量,则用指针运算符 -> (一个短横杆+大于号)
 */

struct Student{
    string name; //成员
    int age;
    int num;
    char level;
};

int main() {
    Student stu1, *p; //stu1为实例变量,p为指针变量
    
    // 实例变量
    stu1.name = "张三"; // 实例变量成员赋值
    stu1.age = 16;
    stu1.num = 1;
    stu1.level = 'A';
    
    cout<<stu1.name<<endl; //实例变量成员访问
    cout<<endl;
    /*
     输出:
     张三
     */
    
    // 指针变量
    p = &stu1; //把stu1的地址给p,那么通过指针p就可以访问stu1
    p->name = "李四"; //赋值 通过指针p修改结构体变量stu1成员name的值
    cout<<p->name<<endl; //访问输出
    cout<<stu1.name<<endl; //修改了stu1的值
    cout<<(&stu1)->name<<endl; // (&stu1)是指地址,那就要通过指针访问->
    cout<<(*p).name<<endl; //*p是指变量本身,*p==stu1
    /*
     * &的优先级要比 . ->低,所以一定要注意运算符的优先级
     */
    
    /*
     输出:
     李四
     李四
     李四
     李四
     */
    
    
    
    return 0;
}