Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将struct作为参数传递并在C中使用它?_C_Pointers_Memcpy - Fatal编程技术网

如何将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来提及结构赋值: