结构的结构作为参数

时间:2013-03-13 13:18:22

标签: c++ c function struct arguments

我有一个很大的结构,里面有其他结构,然后我想把这个结构结构作为函数的参数传递。任何人都知道怎么做或者可以给我一个例子!

3 个答案:

答案 0 :(得分:2)

struct B {
   //your struct..
};
struct A {  
    B b;
};

void foo(struct A a)
{ 
   a.b + ???....
   //you function
}

答案 1 :(得分:2)

如果你的函数不需要修改任何struct的内容,你可以像传递其他任何参数一样传递它:

struct bigStruct {
  struct aStruct a;
  struct anotherStruct b;
  struct someOtherStruct c;
  ...
};

void foo( struct bigStruct s )
{
  do_something_with( s.a );
  do_something_else_with( s.b );
  ...
}

如果你需要写任何struct的成员,你需要将指针传递给struct,并使用->运算符来访问它的成员:

void bar( struct bigStruct *p )
{
   do_something_with( p->a );
   do_something_else_with( p->b );
   ....
}

如果结构类型非常大,有时也需要使用指针。

请注意,在处理指向struct的指针时,只需要使用->运算符。在上面的结构定义中,abc是常规结构类型,因此我们使用.访问其成员。例如,假设aStruct的以下定义:

struct aStruct {
  int ival;
  double dval;
  char name[20];
};

我们会通过p访问这些成员,如下所示:

printf( "%d\n", p->a.ival );
printf( "%f\n", p->a.dval );
printf( "%s\n", p->a.name );

现在,如果我们的bigStruct被定义为

struct bigStruct {
  struct aStruct *a;
  ...
};

然后我们需要对->的孩子和p的孩子使用p->a运算符:

printf( "%d\n", p->a->ival );
printf( "%f\n", p->a->dval );
printf( "%s\n", p->a->name );

答案 2 :(得分:0)

结构可以具有基本类型和复杂类型作为成员。传递具有成员结构的结构与传递仅具有基本类型成员的结构没有区别。