在C中的链表,如何解决预期的标识符错误?

时间:2019-06-01 08:39:59

标签: c

我是C语言的新手,我无法正确编译此文件,您能帮我吗?

struct tagNode
{
    int v, f;

    struct tagNode *next;

    struct tagNode( int _v )
    {
        v = _v;
        next = NULL;
    }
};

预期的标识符或“(int”之前的“(”:      struct tagNode(int _v)

1 个答案:

答案 0 :(得分:0)

  

期望的标识符或'('在'int'之前:struct tagNode(int _v)

这是因为在 C ++

中进行编译时出现了意外的 struct

C ++ 中的有效代码版本可以是:

struct tagNode
{
    int v, f;

    tagNode *next;

    tagNode (int _v)
    {
        v = _v;
        next = NULL;
    }
};

但是

  • f 呢?
  • 构造函数也可以是tagNode(int _v) : v(_v), next(NULL) {}
  • 并且您有一个指针,所以我建议您看一下rule of three

C 中没有构造函数/方法,因此 C 中的代码等效于:

#include <stdlib.h>

struct tagNode
{
  int v, f;
  struct tagNode * next;
};

struct tagNode * alloc(int _v)
{
  struct tagNode * r = malloc(sizeof(struct tagNode));

  r->v = _v;
  r->next = NULL;
  return r;
}