参数与函数调用不匹配

时间:2014-08-21 17:45:08

标签: c function parameters structure

我正在努力实现类似于这个问题的一些事情: link

我在代码中有这个:

#include <stdio.h>
#include <stdlib.h>
struct a *prepareStructA(void);

struct abstract
{
  int x;
  int y;
  int radius;
};

struct a
{
  struct abstract abs;
  //... other data ...
};

//OR Smarter way:
void foo2(struct abstract *data)
{
  int x,y,r;
  x = data->x;
  y = data->y;
  r = data->radius;
}
//Calling foo2 with:
main(){
struct a *sa = prepareStructA();
foo2(sa->abs);
}

但是我收到了这个错误:

  

'foo2'

的参数1的不兼容类型
expected ‘struct abstract *’ but argument is of type ‘struct abstract’
void foo2(struct abstract *data)

如果我将“* data”更改为“data”,则会出现分段错误。有人可以帮帮我吗。我实际上想要实现的是将不同的结构传递给相同的函数并对它们执行相同的操作。因此,任何有关这方面的见解也会有所帮助。提前致谢!

1 个答案:

答案 0 :(得分:4)

您需要传入结构的地址:

foo2(&(sa->abs));