簡體   English   中英

結構體作為參數

[英]struct of structs as argument

我有一個很大的結構,里面有其他結構,然后我想將此結構結構作為函數的參數傳遞。 任何人都知道該怎么做,或者可以給我一個例子!

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

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

如果您的函數不需要修改任何該結構的內容,則可以像傳遞其他任何參數一樣傳遞它:

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 );
  ...
}

如果需要寫入該結構的任何成員,則需要傳遞一個指向該結構的指針 ,並使用->運算符訪問其成員:

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

如果結構類型非常大,有時也希望使用指針。

請注意,在處理指向結構的指針時,只需要使用->運算符即可。 在上面的struct定義中, abc是常規的struct類型,因此我們可以使用來訪問它們的成員. 例如,假設aStruct定義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 );

結構可以同時具有基本類型和復雜類型作為成員。 傳遞具有依次為成員的成員的結構與傳遞僅具有基本類型成員的結構沒有區別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM