c - 纯 C 中的“结构”

标签 c gcc struct

我正在用纯 C 开发一个小项目。我使用 gcc 编译器(这就是我的想法)。 我有一个结构如下:

struct STACK{
  char var;
  struct STACK* next;
  struct STACK* prev;
};

在我的函数 f() 中稍微低一点:

STACK head;
head->var='a';
printf("%c", head->var);

现在,在编译期间我得到错误:

: In function ‘f’:
:13:3: error: unknown type name ‘STACK’
:14:7: error: invalid type argument of ‘->’ (have ‘int’)
:15:20: error: invalid type argument of ‘->’ (have ‘int’)

谁能给我解释一下哪里出了问题?当我使用 C++ 和 g++ 工作时,一切似乎都很好。

================= 编辑:

好的,那行得通,但现在我必须动态创建 STRUCT 类型的结构,并且只保留指针给它们。在 C 中可以吗?

最佳答案

需要在结构名STACK前加上struct关键字:

struct STACK head;

代替:

STACK head;

您还使用了通常应用于指针的->。只需使用 . 代替:

head.var

请记住:

x->y

可以翻译成:

(*x).y

最后,如果您将结构定义为:

typedef struct {
    char var;
    struct STACK* next;
    struct STACK* prev;
} STACK;

您可以将变量声明为:

STACK head;

关于c - 纯 C 中的“结构”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21505881/

相关文章:

gcc - nvcc for linux 使用的默认主机编译器

gcc - 将 Ubuntu 12.04 上的 GCC 4.6.3 升级到 4.8.2

c - 当我们从较低的数据类型转换为较高的数据类型时会发生什么

java - 测试 CRC 逻辑的最佳方法?

c - 用于 Delphi ShareMem 应用程序的 GCC dll

C++:从基类实例构造子类?

c - 如何在结构中分配一个数组

c - 解释包含结构的 union 的 sizeof 运算符的结果

c - 下面的程序中的系统调用做了什么?

swift - 使用结构构建端点