纯C中的'结构'

时间:2014-02-02 01:17:21

标签: 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类型的结构,并且只保留pionters。是否有可能在C?

3 个答案:

答案 0 :(得分:4)

您需要在结构名称struct之前添加STACK关键字:

struct STACK head;

而不是:

STACK head;

此外,您正在使用通常应用于指针的->。只需使用.代替:

head.var

请记住:

x->y

可以翻译成:

(*x).y

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

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

您可以将变量声明为:

STACK head;

答案 1 :(得分:1)

定义没问题,但要声明变量,请尝试:

struct STACK head;

并引用它的成员,

head.var = 'a';

答案 2 :(得分:1)

由于您没有为结构提供typedef,因此需要声明为

struct STACK head;

head也不是指针,因此当您加入其成员时,->的使用应替换为.