c - 如何在 C 中将 struct 作为参数传递并对其进行 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, &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);

此外,您不需要将 memcpystruct 一起使用 - 赋值也可以工作:

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/

相关文章:

C - 整数抛出随机值?

c - 打印整数值时出现意外输出

c - char指针数组中的多个字符串输入

C++使用动态数组将小写字母更改为大写字母

c - 查找数组中的最小数字

c - 返回变量地址的函数如何返回零?

c - libtcod - 移动功能不响应输入

c - memcpy() 和 strncpy() 之间有什么区别,因为后者可以很容易地替代前者?

c - 如何使用memcpy初始化struct中的数组

c++ - memcpy_s C++ 指针