如何用C中的结构调用函数?

sk0*_*k01 2 c struct function call

我正试图制作一个"兰顿的蚂蚁计划".我已经定义了一个结构:

typedef struct Ant
{
    int x;
    int y;
    int b;
}Ant;
Run Code Online (Sandbox Code Playgroud)

我有一个功能:

int st(Ant *ant, int len, char (*area)[len]);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在main函数中调用此函数时使用

int main()
{
   [..... ]



   char r[l][l];

   Ant ant;
   ant.x = 0;
   ant.y = 0;
   ant.b = 2;

   st(Ant *ant, l, r);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:'Ant'之前的预期表达式.

我不知道问题出在哪里.有人知道什么是错的.我对编码很新.

谢谢

Mar*_*evi 6

您的函数st将指针Ant作为第一个参数,因此您需要传递变量的地址ant(与*实际指示的内容一样ant).更改以下行:

st(Ant *ant, l, r);
Run Code Online (Sandbox Code Playgroud)

至 :

st(&ant, l, r);
Run Code Online (Sandbox Code Playgroud)

因为函数的原型是:

int st(Ant *ant, int len, char (*area)[len]);
Run Code Online (Sandbox Code Playgroud)

虽然您的原型不需要更改,但您也可以查看这个原型,以使您的代码更加自我记录:

int st(Ant *ant, int len, char area[len][len]);
Run Code Online (Sandbox Code Playgroud)

  • @Marievi As StoryTeller指出你可以建议使用替代原型进行自我记录.事实上,没有必要更改原型,因为函数声明是等效的. (2认同)