`memcpy`函数是C语言中的一个标准库函数,用于从源内存块复制n个字节到目标内存块。其原型如下:
```c
void *memcpy(void *dest, const void *src, size_t n);
```
memcpy`从`src`指向的内存地址开始,复制`n`个字节到`dest`指向的内存地址。
如果你想用`memcpy`来复制一个结构体,你需要确保结构体的每个成员都被正确地复制。这是因为结构体的成员可能跨越多个字节,甚至跨越多个机器字。
下面是一个简单的例子,展示了如何使用`memcpy`复制一个结构体:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
    int a;
    double b;
    char c[10];
} MyStruct;
int main() {
    MyStruct src = {1, 2.3, "hello"};
    MyStruct dest;
   
    // 复制整个结构体
    memcpy(&dest, &src, sizeof(MyStruct));
   
    // 输出目标结构体的内容,以验证是否被正确复制
    printf("dest.a = %d\n", dest.a);  // 输出:1
    printf("dest.b = %f\n", dest.b);  // 输出:2.300000
    printf("dest.c = %s\n", dest.c);  // 输出:hello
    sizeof结构体大小
    return 0;
}
```
注意几点:
1. 我们使用了`&dest`和`&src`作为目标内存块和源内存块的指针。这是因为我们需要提供内存地址,而不是值。
2. 使用`sizeof(MyStruct)`来确定要复制的字节数。这将确保所有结构体的成员都被正确地复制。