如何将两个单独的结构传递给接受单个指针的函数?

时间:2017-01-23 16:47:25

标签: c pointers struct

我的函数只有一个(void*)指针用于数据传输。但我需要使用struct A指针同时传输两个不同的结构(struct B(void*))。是否可以通过此指针存储一个接一个结构,然后使用结构大小和偏移量访问数据?

3 个答案:

答案 0 :(得分:5)

您可以执行以下操作:

struct C 
{
    struct A myA;
    struct B myB;
};

myA中填充myBC变量,然后将指针传递给函数中的struct C

答案 1 :(得分:2)

您可以创建一个包含两个指针的struct,然后传递该struct实例的地址:

typedef struct
{
    struct A *a_ptr;
    struct B *b_btr;
} struct_with_two_pointers;

...

struct A a;
struct B b;

...

struct_with_two_pointers X;
x.a_ptr = &a;
x.b_ptr = &b;

someVoidFunc( ( void * ) &X );

答案 2 :(得分:2)

  

添加示例代码段,如果有帮助的话。

typedef struct
{
    int age;
    int rollno;
}struct_A;

typedef struct
{
    char name[10];
     int marks; 
}struct_B;

typedef struct
{
    struct_A a;
    struct_B b;
}struct_C;

struct_C combined_struct = {{15,10}, {"Henry", 85}};  //Fill the structure here.

someRandonFunction((void*) &combined_struct); //Pass it.