关于C ++中的struct和pointer

时间:2013-04-07 11:20:57

标签: c++ pointers struct linked-list heap

我想创建一个链表。

以下代码:

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

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

2 个答案:

答案 0 :(得分:2)

好的以更完整的方式解释它。大多数其他人已经写过你必须使用' - >'什么时候你有一个指针。但你也可以用'。'来做到这一点,为此你必须尊重运营商的优先级。我们需要'*'来获取指针的内容,但是它的优先级低于'。',因此你必须将它写入括号中以赋予它更高的优先级,所以当你想用''来做“。你必须写:

(*sample).next

你知道这是一个复杂的语法,以更简单的方式执行' - >'被介绍了。有了它,您可以以更舒适的方式编写代码。

所以这等于示例,它看起来好多了。

sample->next

答案 1 :(得分:1)

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

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

错误实际上说明了一切。