如何将struct作为参数传递并在C中记忆它?

时间:2013-05-27 13:27:28

标签: c pointers memcpy

我有以下代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
   int a[3];
} A;

typedef struct
{
   int b;
} B;

typedef struct
{
    A a;
    B b;
} C;

void getC(C *c_p)
{
    C c;
    c.a.a[0] = 1;
    c.b.b = 1;
    memcpy(c_p, &c, sizeof(C));
}

int main()
{
    C *c;
    getC(c);
}

并且它说过程返回了,我真的找不到原因,我认为memcpy部分不起作用,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

错误发生在main,您将未初始化的指针传递给getC。你应该指出一些事情,比如:

C c;
getC(&c);

C *c = malloc(sizeof(C));
getC(c);
...
free(c);

此外,您不需要将memcpystruct一起使用 - 分配也可以使用:

void getC(C *c_p)
{
    C c;
    c.a.a[0] = 1;
    c.b.b = 1;
    *c_p = c; // No memcpy
}