我想创建一个链表。
对于以下代码:
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 '->'?