-7

我想创建一个链接列表。

对于以下代码:

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

sample.next和 和有什么不一样sample->next

4

2 回答 2

2

好的,以更完整的方式解释它。大多数其他人已经写过,当你有一个指针时,你必须使用'->'。但是您也可以使用“.”来执行此操作,为此您必须尊重运算符的优先级。我们需要 '*' 来获取指针的内容,但是它的优先级比 '.' 低,所以你必须把它写在括号里给它更高的优先级,所以当你想用 ' 。你必须写:

(*sample).next

你会看到这是一个复杂的语法,为了更简单地做到这一点,引入了'->'。有了它,您可以以更舒适的方式编写代码。

所以这与示例相同,并且看起来要好得多。

sample->next
于 2013-04-07T11:50:57.927 回答
1

由于sample是指针,因此无法通过.间接操作符访问数据成员->。例如,这不会编译:

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

错误实际上不言自明。

于 2013-04-07T11:29:32.483 回答