关于c++中的结构体和指针



我想创建一个链表。

对于以下代码:

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

sample.nextsample->next的区别是什么?

好吧,用更完整的方式解释一下。大多数人已经写过,当你有一个指针时,你必须使用'->'。但你也可以用'来做。,要做到这一点,你必须尊重操作符的优先级。我们需要'*'来获取指针的内容,但它的优先级低于'。',所以你必须把它写进括号里,给它一个更高的优先级,所以当你想用'。你必须写:

(*sample).next

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

这个等于那个例子,看起来好多了。

sample->next

由于sample是一个指针,不可能通过.而不是间接操作符->来访问数据成员。例如,这不会编译:

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

相关内容

  • 没有找到相关文章