如何将struct作为参数传递并在C中使用它?
我有以下代码:如何将struct作为参数传递并在C中使用它?,c,pointers,memcpy,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, &a
#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);
或
此外,您不需要将memcpy与结构一起使用-赋值也可以:
void getC(C *c_p)
{
C c;
c.a.a[0] = 1;
c.b.b = 1;
*c_p = c; // No memcpy
}
错误在main中,您将未初始化的指针传递给getC。你应该指出一些东西,比如:
C c;
getC(&c);
或
此外,您不需要将memcpy与结构一起使用-赋值也可以:
void getC(C *c_p)
{
C c;
c.a.a[0] = 1;
c.b.b = 1;
*c_p = c; // No memcpy
}
您尚未在main中为c分配指向的内存。你正在记忆一个未初始化的指针,调用未定义的行为。为什么进程不返回?这并不是说你在做任何可以阻止它返回的事情。你还没有在main中为c分配内存来指向它。你正在记忆一个未初始化的指针,调用未定义的行为。为什么进程不返回?这并不是说你正在做任何可以阻止它返回的事情。+1,如果可以的话,我会添加另一个+1来提及结构赋值:+1,如果可以的话,我会添加另一个+1来提及结构赋值: