Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于C++中的结构和指针_C++_Pointers_Struct_Linked List_Heap - Fatal编程技术网

关于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

那你为什么不两个都试试看呢?只有一个会编译:第一个是当你有一个结构或类的时候,第二个是当你有一个指向结构或类的指针的时候。我现在明白了,谢谢你的帮助:在下次问之前,我会做一些研究,我已经失去了很多分数