我有一個相當大的結構裏面有其他結構,然後我想通過這個結構的結構作爲函數的參數。任何人都知道如何去做,或者請給我一個例子!結構的結構作爲參數
0
A
回答
2
struct B {
//your struct..
};
struct A {
B b;
};
void foo(struct A a)
{
a.b + ???....
//you function
}
+0
@icepack按值傳遞數據?特別是如果它是一個大型數據結構? –
0
結構可能同時具有基本類型和複雜類型作爲成員。傳遞具有反過來結構成員的結構與傳遞僅具有基本類型成員的結構沒有區別。
2
如果你的函數不需要修改任何結構的內容,你可以把它像使用任何其他的說法:如果你需要編寫任何結構的成員
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);
....
}
有時,也希望使用指針,如果結構類型是非常大。
請注意,在處理指向結構體的指針時,您只需要使用->
運算符。在上面的結構定義中,a
,b
和c
是常規結構類型,所以我們可以使用.
來訪問它們的成員。例如,假設有如下定義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
的子女和的子女使用->
運營商:
printf("%d\n", p->a->ival);
printf("%f\n", p->a->dval);
printf("%s\n", p->a->name);
相關問題
- 1. 使用結構作爲參數:錯誤:未定義的結構
- 2. 結構作爲函數的參數
- 3. C結構的指針作爲參數
- 4. 模板結構作爲函數參數
- 5. 迅速結構作爲函數參數
- 6. 結構數組作爲輸入參數
- 7. 函數指針,結構作爲參數
- 8. 結構參數
- 9. 結構作爲未知參數
- 10. Python - 發送參數作爲結構
- 11. 動態結構作爲參數Golang
- 12. 將結構作爲參數傳遞
- 13. C,傳遞結構作爲參數
- 14. C#傳結構作爲參數
- 15. 傳遞新結構作爲參數
- 16. 谷歌扳手結構作爲參數
- 17. 傳遞結構指針作爲參數
- 18. 使用結構作爲參數
- 19. 結構作爲構造函數的參數(在主申報)
- 20. 結構和參數
- 21. C - 使用結構指針作爲參數在函數中分配結構
- 22. 結構數組的結構
- 23. 結構構件作爲函數
- 24. 結構數組作爲Perl 6的一個屬性NativeCall結構
- 25. AfxBeginThread中的參數結構
- 26. url結構中的參數
- 27. C結構指針作爲參數:對結構進行永久更改
- 28. 結構數組 - 結構?
- 29. 結構的結構?
- 30. C++:爲什麼我的向量結構作爲一個結構?
下定決心,無論其C或C++。 –
只要通過它?它應該工作正常。 –
該結構的內容是無關緊要的。你只是傳遞一個結構,然後在你的函數中訪問結構中的結構。 – Mike