C语言中->和.的区别

当定义了一个结构体的时候,如果想要取出这个结构体中的成员的时候,需要使用->

struct stu {
string name;
int number;
int classnumber;
int gradenumber;
};

  如果定义了一个指针,让这个指针指向这个结构体,通过这个指针 P 取出这个结构体中的内容,这时我们用的符号时 .(点)。如果是用指针 *P的形式取出这个里面的元素的话,这时我们需要使用*P.(元素)

这里的区别主要是:->意味着取地址。找到这个元素所在的地址,然后将这个元素取出来。.是在这个元素结构体中取出来这个里面的元素。

#include<iostream>
using namespace std;
struct stu {
        string name;
        int number;
        int classnumber;
        int gradenumber;
};
int main() {
        struct stu student;
        struct stu * p = &student;
        p->classnumber = 7;
        cout<<p->classnumber << endl;
        cout<<(&student)->classnumber<<endl;
        cout<<student.classnumber<<endl;
        cout<<(*p).classnumber<<endl;
}

如上图的四种表示方式,意思是一样的。

总而言之:

.是取的这个结构体中的元素。(我直接带你出去玩)

->是取的这个结构体中中元素的地址 所对应的元素。(这里有点像是脑筋急转弯。就是我先找到你家,然后再带你出来玩)