當定義了一個結構體的時候,如果想要取出這個結構體中的成員的時候,需要使用->
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; }
如上圖的四種表示方式,意思是一樣的。
總而言之:
.是取的這個結構體中的元素。(我直接帶你出去玩)
->是取的這個結構體中中元素的地址 所對應的元素。(這里有點像是腦筋急轉彎。就是我先找到你家,然后再帶你出來玩)