C/C++ memcpy 用法與範例

本篇 ShengYu 介紹 C/C++ memcpy 用法與範例,memcpy 是用來複製一段記憶體區塊的函式,以下介紹如何使用 memcpy 函式。

C/C++ 使用 memcpy 來複製一段記憶體區塊,也可以用來複製任何資料類型,要使用 memcpy 的話需要引入的標頭檔 <string.h>,如果要使用 C++ 的標頭檔則是引入 <cstring>
memcpy 函式原型為

1
void * memcpy(void * destination, const void * source, size_t num);

memcpy() 將 source 指向的記憶體區塊複製 num 個到 destination 指向的記憶體區塊,
memcpy 跟 strcpy 不同的是 strcpy 遇到 \0 結束字元就停止複製了,所以 strcpy() 只能用來複製字串,來看看下面的 memcpy 用法範例吧!

一開始先宣告一個 Student 結構的變數 student,然後初始化 student 的 id 與 name 屬性,複製 name 時可以使用 memcpy 或 strcpy,之後再用 memcpy 把整個 student 複製到 student2,

cpp-memcpy.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// g++ cpp-memcpy.cpp -o a.out
#include <stdio.h>
#include <string.h>

struct Student {
int id;
char name[64];
};

int main() {
struct Student student;
student.id = 123456;

char name[] = "Tom";
memcpy(student.name, name, strlen(name)+1);
// or strcpy(student.name, name);
printf("student: %d, %s\n", student.id, student.name);

struct Student student2;
memcpy(&student2, &student, sizeof(student));
printf("student2: %d, %s\n", student2.id, student2.name);
return 0;
}

結果如下,

1
2
student: 123456, Tom
student2: 123456, Tom

以上就是 C/C++ memcpy 的用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它參考
memcpy - C++ Reference
https://www.cplusplus.com/reference/cstring/memcpy/

其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 新手入門教學懶人包
C/C++ memset 用法與範例
C/C++ memcmp 用法與範例
C/C++ strcpy 用法與範例