关于C++中的结构和指针
我想创建一个链接列表 对于以下代码:关于C++中的结构和指针,c++,pointers,struct,linked-list,heap,C++,Pointers,Struct,Linked List,Heap,我想创建一个链接列表 对于以下代码: struct sampleStruct { int a; sampleStruct *next = NULL; }; sampleStruct *sample = new sampleStruct; sample.next和sample->next之间有什么区别?因为sample是指针,所以无法通过任何方式访问数据成员。而不是间接运算符->。例如,这不会编译: sample.next; // error: member reference
struct sampleStruct
{
int a;
sampleStruct *next = NULL;
};
sampleStruct *sample = new sampleStruct;
sample.next和sample->next之间有什么区别?因为sample是指针,所以无法通过任何方式访问数据成员。而不是间接运算符->。例如,这不会编译:
sample.next; // error: member reference type 'sampleStruct *' is a pointer;
// maybe you meant to use '->'?
这个错误本身就是明证。好的,我们可以用更完整的方式来解释它。大多数其他人已经写过,当你有一个指针时,你必须使用'->'。但您也可以使用“.”来执行此操作,要执行此操作,必须尊重运算符的优先级。我们需要“*”来获取指针的内容,但它的优先级比“.”低,因此您必须将其写入括号中以赋予其更高的优先级,因此当您要使用“.”执行此操作时,您必须写入:
(*sample).next
你看,这是一个复杂的语法,为了更简单地实现这一点,引入了'->'。有了它,您可以以更舒适的方式编写代码
因此,这与示例相同,并且看起来更好
sample->next
那你为什么不两个都试试看呢?只有一个会编译:第一个是当你有一个结构或类的时候,第二个是当你有一个指向结构或类的指针的时候。我现在明白了,谢谢你的帮助:在下次问之前,我会做一些研究,我已经失去了很多分数