在本教程中,我们将借助示例了解 C++ memcpy() 函数。
C++ 中的memcpy()
函数将指定字节的数据从源复制到目标。它在cstring 头文件中定义。
示例
#include <cstring>
#include <iostream>
using namespace std;
int main() {
char source[] = "Tutorial";
char destination[] = "Programiz";
// copy all bytes of destination to source
memcpy(destination, source, sizeof(source));
cout << destination;
return 0;
}
// Output: Tutorial
memcpy() 语法
用法:
memcpy(void* dest, const void* src, size_t count);
参数:
memcpy()
函数接受以下参数:
- dest- 指向内容复制到的内存位置的指针。它是
void*
类型。 - src- 指向从中复制内容的内存位置的指针。它是
void*
类型。 - count- 要复制的字节数
src
到dest
.它是size_t
类型。
注意:自从src
和dest
属于void*
类型,我们可以使用大多数数据类型memcpy()
.
返回:
memcpy() 函数返回:
dest
- 目标的内存位置
memcpy() 原型
cstring 头文件中定义的memcpy()
原型为:
void* memcpy(void* dest, const void* src,size_t count);
当我们调用此函数时,它会将 count
字节从 src
指向的内存位置复制到 dest
指向的内存位置。
memcpy() 未定义行为
的行为memcpy()
是不明确的如果:
src
或dest
是空指针,或者- 对象重叠。
示例 1:C++ memcpy()
#include <cstring>
#include <iostream>
using namespace std;
int main() {
char source[] = "Tutorial";
char destination[] = "Programiz";
cout << "Initial destination: " << destination << endl;
// copy all bytes of destination to source
memcpy(destination, source, sizeof(source));
cout << "Final destination: " << destination;
return 0;
}
输出
Initial destination: Programiz Final destination: Tutorial
在这里,我们使用sizeof()
函数将source
的所有字节复制到destination
。
示例 2:C++ memcpy() - 仅复制部分源代码
#include <cstring>
#include <iostream>
using namespace std;
int main() {
char source[] = "Tutorial";
char destination[] = "Programiz";
cout << "Initial destination: " << destination << endl;
// copy 4 bytes of destination to source
memcpy(destination, source, 4);
cout << "Final destination: " << destination;
return 0;
}
输出
Initial destination: Programiz Final destination: Tutoramiz
在这里,我们只复制了 source
的 4 个字节到 destination
。
由于单个 char
数据占用 1 个字节,因此该程序将 destination
的前 4 个字符替换为 source
的前 4 个字符。
示例 3:具有整数类型的 C++ memcpy()
#include <cstring>
#include <iostream>
using namespace std;
int main() {
int source[10] = {8,3,11,61,-22,7,-6,2,13,47};
int destination[5];
// copy 5 elements (20 bytes) of source to destination
memcpy(destination, source, sizeof(int) * 5);
cout << "After copying" << endl;
for (int i=0; i<5; i++)
cout << destination[i] << endl;
return 0;
}
输出
After copying 8 3 11 61 -22
在这里,我们创建了两个int
数组source[]
和destination[]
大小10和5分别。
然后我们使用 memcpy()
函数将 source[]
的 5 个元素复制到 destination[]
。
memcpy(destination, source, sizeof(int) * 5);
注意参数 sizeof(int) * 5
。代码 sizeof(int)
给出了单个 int
数据占用的总字节数,即 4 个字节。
由于我们要将 5 个 int
元素从 source[]
复制到 destination[]
,因此我们将 sizeof(int)
乘以 5
,等于 20 个字节的数据。
相关用法
- C++ memcpy()用法及代码示例
- C++ memchr()用法及代码示例
- C++ memcmp()用法及代码示例
- C++ memset()用法及代码示例
- C++ memmove()用法及代码示例
- C++ merge()用法及代码示例
- C++ map lower_bound()用法及代码示例
- C++ multimap key_comp()用法及代码示例
- C++ multimap empty()用法及代码示例
- C++ multimap cend()用法及代码示例
- C++ multiset begin()、end()用法及代码示例
- C++ mbtowc()用法及代码示例
- C++ map::at()用法及代码示例
- C++ multiset value_comp()用法及代码示例
- C++ multimap insert()用法及代码示例
- C++ map max_size()用法及代码示例
- C++ multiset emplace()用法及代码示例
- C++ multiset lower_bound()用法及代码示例
- C++ multimap lower_bound()用法及代码示例
- C++ multiset crbegin()、crend()用法及代码示例
注:本文由纯净天空筛选整理自 C++ memcpy()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。