我想创建一个链表。
以下代码:
struct sampleStruct
{
int a;
sampleStruct *next = NULL;
};
sampleStruct *sample = new sampleStruct;
sample.next
和sample->next
之间的区别是什么?
答案 0 :(得分:2)
好的以更完整的方式解释它。大多数其他人已经写过你必须使用' - >'什么时候你有一个指针。但你也可以用'。'来做到这一点,为此你必须尊重运营商的优先级。我们需要'*'来获取指针的内容,但是它的优先级低于'。',因此你必须将它写入括号中以赋予它更高的优先级,所以当你想用''来做“。你必须写:
(*sample).next
你知道这是一个复杂的语法,以更简单的方式执行' - >'被介绍了。有了它,您可以以更舒适的方式编写代码。
所以这等于示例,它看起来好多了。
sample->next
答案 1 :(得分:1)
由于sample
是一个指针,因此无法通过.
而不是间接运算符->
访问数据成员。例如,这不会编译:
sample.next; // error: member reference type 'sampleStruct *' is a pointer;
// maybe you meant to use '->'?
错误实际上说明了一切。