我想我对如何在 C 中声明结构和 typedef 感到非常困惑。我一直在阅读 - 根据这个答案,我所做的应该是正确的。我正在尝试声明一个简单的类型(目前基本上只是一个向量),并将其与指针一起使用,但有些地方非常错误,并且我不断收到错误消息(包括其他编译器输出,包括命令):
gcc main.c -o simulator -lm -Wall -std=c99
main.c: In function ‘main’:
main.c:20:3: error: incompatible type for argument 1 of ‘init_agent’
init_agent(agent_list[i]);
^
main.c:9:6: note: expected ‘struct agent *’ but argument is of type ‘agent’
void init_agent(agent *a)
^
make: *** [main] Error 1
[Finished in 0.0s with exit code 2]
我的代码如下:
#include <stdlib.h>
typedef struct agent_s
{
float x;
float y;
}agent;
void init_agent(agent *a)
{
a->x = (float)(rand()%100)/10;
a->y = (float)(rand()%100)/10;
}
int main(int argc, char** argv)
{
int agent_count = 10;
agent* agent_list = malloc(sizeof(agent)*agent_count);
for(int i = 0;i<agent_count;i++)
init_agent(agent_list[i]);
return 0;
}
我这辈子都弄不明白出了什么问题。我想我做的一切都是正确的,但错误让我觉得我在声明类型时做错了,或者可能是我声明数组的方式。
轻微编辑:我累了,可能没有多大意义 - 基本上我希望能够创建一个代理“对象”,类似于 c++ 对象,并且能够简单地操作它们。我意识到我可以只使用 c++,但我正在尝试更多地了解 C,所以我觉得我有点作弊。