我想创建一个链接列表。
对于以下代码:
struct sampleStruct
{
int a;
sampleStruct *next = NULL;
};
sampleStruct *sample = new sampleStruct;
sample.next
和 和有什么不一样sample->next
?
我想创建一个链接列表。
对于以下代码:
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 '->'?
错误实际上不言自明。