C 已定义结构,但编译器声称它不是';T

C 已定义结构,但编译器声称它不是';T,c,struct,ncurses,C,Struct,Ncurses,我已经开始学习C语言。我想学习如何使用ncurses库,并找到了一个“教程”,它更多的是一个示例类型的说明 在本教程中,有一个包含以下代码的结构定义: typedef struct Snakepart { int x; int y; } Snakeypart; Snakeypart snakey[SNAKEY_LENGTH]; 然后,当我尝试编译时,出现以下错误: snake.c:47:9: error: member reference base

我已经开始学习C语言。我想学习如何使用ncurses库,并找到了一个“教程”,它更多的是一个示例类型的说明

在本教程中,有一个包含以下代码的结构定义:

typedef struct Snakepart {
          int x;
          int y;
} Snakeypart;
Snakeypart snakey[SNAKEY_LENGTH];
然后,当我尝试编译时,出现以下错误:

snake.c:47:9: error: member reference base type 'Snakeypart [40]' is not a
  structure or union
指的是这一行代码:

snakey.x = sbegx + i;
前面在main()中使用以下代码定义了变量snakey:

typedef struct Snakepart {
          int x;
          int y;
} Snakeypart;
Snakeypart snakey[SNAKEY_LENGTH];

我不明白为什么在定义了结构之后会出现错误。我对C语言编程相当陌生,但我理解一些超出我编写代码能力范围的概念,所以如果必要的话,不要害怕掌握一些技术知识。谢谢。

您需要调用数组中的元素

例如:

snakey[0].x = sbegx + i;
使用
snakey[snakey_LENGTH]创建snakey时,您的程序将创建一个SNAKEY_长度结构数组。
您可以使用
snakey[j]
访问阵列中的第j个结构

snakey[n].x = sbegx + i;
--这可能是:n是int


因为。。snakey是一个数组

您尝试过typedef结构{/*…*/}Snakeypart吗?
snakey
被定义为数组,而不是
Snakeypart
。。。您需要类似于snakey[0].x的内容。是的,谢谢,我看得太仔细了,为了让它更明显,条目应该是snakey[I].x,因为它在for循环中。是的,谢谢。看来我看得太重了。