当定义了一个结构体的时候,如果想要取出这个结构体中的成员的时候,需要使用->
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; }
如上图的四种表示方式,意思是一样的。
总而言之:
.是取的这个结构体中的元素。(我直接带你出去玩)
->是取的这个结构体中中元素的地址 所对应的元素。(这里有点像是脑筋急转弯。就是我先找到你家,然后再带你出来玩)