C++的基礎知識(七)--符號->

  ->是一個整體,它是用於指向結構體、C++中的class等含有子數據的指針用來取子數據。換種說法,如果我們在C語言中定義了一個結構體,然後申明一個指針指向這個結構體,那麼我們要用指針取出結構體中的數據,就要用到“->”。
struct Data
{
   int a,b,c;
};/*定義結構體*/
struct Data * p;/*定義結構體指針*/
struct Data A = {1,2,3};/*聲明變量A*/
int x;  /*聲明一個變量x*/
p = &A ; /*讓p指向A*/
x = p->a;/*取出p所指向的結構體中包含的數據項a賦值給x*/
     /*由於此時p指向A,因而 p->a == A.a,也就是1*/

p = p->next;這應該出現在C語言的鏈表,這裏的next應該是一個與p同類型的結構體指針,其定義格式應該是:

struct Data 
{
   int a;
   struct Data * next;
};/*定義結構體*/
main()
{
   struct Data * p;/*聲明指針變量p*/
  ……
   p = p->next;/*將next中的值賦給p*/
}
假如鏈表爲p1-p2-p3-.......    p1->next=p1,那麼鏈表就斷了,p2,p3會找不到了,鏈表變成了p1--|               |-----| 也就是它自己指向自己了。
   p->next=p表示節點p的下一個節點還是p,如果鏈表只有p節點,那麼這樣就變成了一個循環鏈表,p=p->next表示修改指針p的位置,把p指向原來的下一個節點。
   這裏有一個連如下:
......->[0000]->[1111]->[2222]->[3333]->........
|
p  開始時p指向節點[0000],那麼p->next指向的是節點[1111],如果執行語句p->next=p,實際上就是修改了指針p->next的位置,p沒有變,鏈表變成了:......->[0000]->|
                                       p
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章