我有以下代码:
#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部分不起作用,有人可以帮忙吗?
最佳答案
错误出现在您的 main
中,您将未初始化的指针传递给 getC
。您应该让它指向某个东西,如下所示:
C c;
getC(&c);
或
C *c = malloc(sizeof(C));
getC(c);
...
free(c);
此外,您不需要将 memcpy
与 struct
一起使用 - 赋值也可以工作:
void getC(C *c_p)
{
C c;
c.a.a[0] = 1;
c.b.b = 1;
*c_p = c; // No memcpy
}
关于c - 如何在 C 中将 struct 作为参数传递并对其进行 memcpy ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16774326/