我想創建一個鏈表。關於C++中的結構和指針
對於下面的代碼:
struct sampleStruct
{
int a;
sampleStruct *next = NULL;
};
sampleStruct *sample = new sampleStruct;
是什麼sample.next
和sample->next
之間的區別?
我想創建一個鏈表。關於C++中的結構和指針
對於下面的代碼:
struct sampleStruct
{
int a;
sampleStruct *next = NULL;
};
sampleStruct *sample = new sampleStruct;
是什麼sample.next
和sample->next
之間的區別?
好吧,以更完整的方式解釋它。其他大多數人已經寫道,只要你有指針,你必須使用' - >'。但你也可以用'。'來做到這一點,你必須尊重運營商的優先權。我們需要'*'來獲取指針的內容,但是它的優先級比'。'低,所以你必須把它寫入括號中以給它更高的優先級,所以當你想用' 「。您對寫道:
(*sample).next
,你看,這是一個複雜的語法,這樣做在一個更簡單的方法「 - >」進行了介紹。有了它,你可以用更舒適的方式編寫代碼。
所以這是等於這個例子,它看起來好多了。
sample->next
由於sample
是一個指針,因此無法通過.
而不是間接運算符->
訪問數據成員。例如,這將不會編譯:
sample.next; // error: member reference type 'sampleStruct *' is a pointer;
// maybe you meant to use '->'?
該錯誤實際上是說明自己。
爲什麼你不試試然後找出? – 2013-04-07 11:21:33
其中只有一個會編譯:) – dasblinkenlight 2013-04-07 11:22:38
請參閱http://stackoverflow.com/questions/1238613/what-is-the-difference-between-the-dot-operator-and-in-c – 2013-04-07 11:25:40