结构体的结构体作为参数
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 );
....
}
如果结构类型非常大,有时也需要使用指针。
注意,只有在处理指向结构体的指针时才需要使用->
操作符。在上面的结构体定义中,a
、b
和c
是常规结构体类型,因此我们可以用.
访问它们的成员。例如,假设aStruct
的定义如下:
struct aStruct {
int ival;
double dval;
char name[20];
};
可以像这样通过p
访问这些成员:
printf( "%dn", p->a.ival );
printf( "%fn", p->a.dval );
printf( "%sn", p->a.name );
现在,如果我们的bigStruct定义为
struct bigStruct {
struct aStruct *a;
...
};
则需要对p
的子节点和p->a
的子节点使用->
运算符:
printf( "%dn", p->a->ival );
printf( "%fn", p->a->dval );
printf( "%sn", p->a->name );
结构可以同时拥有基本类型和复杂类型作为成员。传递一个成员依次为结构的结构与传递一个只具有基本类型成员的结构没有区别。
相关文章:
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 我应该在C++中将这些结构用作参数化构造函数吗?
- 包含 std::list 的结构体的 C++ 初始化
- 通过函数参数确定结构体成员
- 是好是坏:为了避免使用全局变量/结构体的属性/大量参数而使用巨型结构体
- 如何创建一个公共python函数,它可以接收c++结构体/实例或python对象作为参数
- 使用结构体作为参数:错误:结构体未定义
- 具有许多参数的函数——将它们作为结构体
- 通过引用传递结构体参数
- 传递指向结构体的引用作为模板参数
- 确定它用作参数的结构体数组的大小
- 指向结构体作为函数参数的指针-为什么不更新其值
- 在模板类中使用结构体作为参数并访问它们的元素
- 为什么使用带可变模板参数的结构体同时实例化两个模板
- 结构体的结构体作为参数
- 使用命令行参数创建结构体向量
- 函数参数 -> 结构体成员的 void* 和常量 void* 的解决方案
- 对作为模板参数给出的结构体中的值进行部分特化