2013-04-07 99 views
-7

我想創建一個鏈表。關於C++中的結構和指針

對於下面的代碼:

struct sampleStruct 
{ 
    int a; 
    sampleStruct *next = NULL; 
}; 
sampleStruct *sample = new sampleStruct; 

是什麼sample.nextsample->next之間的區別?

+4

爲什麼你不試試然後找出? – 2013-04-07 11:21:33

+4

其中只有一個會編譯:) – dasblinkenlight 2013-04-07 11:22:38

+1

請參閱http://stackoverflow.com/questions/1238613/what-is-the-difference-between-the-dot-operator-and-in-c – 2013-04-07 11:25:40

回答

2

好吧,以更完整的方式解釋它。其他大多數人已經寫道,只要你有指針,你必須使用' - >'。但你也可以用'。'來做到這一點,你必須尊重運營商的優先權。我們需要'*'來獲取指針的內容,但是它的優先級比'。'低,所以你必須把它寫入括號中以給它更高的優先級,所以當你想用' 「。您對寫道:

(*sample).next 

,你看,這是一個複雜的語法,這樣做在一個更簡單的方法「 - >」進行了介紹。有了它,你可以用更舒適的方式編寫代碼。

所以這是等於這個例子,它看起來好多了。

sample->next 
1

由於sample是一個指針,因此無法通過.而不是間接運算符->訪問數據成員。例如,這將不會編譯:

sample.next; // error: member reference type 'sampleStruct *' is a pointer; 
      //  maybe you meant to use '->'? 

該錯誤實際上是說明自己。