当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ memcpy()用法及代码示例


在本教程中,我们将借助示例了解 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- 要复制的字节数srcdest.它是size_t类型。

注意:自从srcdest属于void*类型,我们可以使用大多数数据类型memcpy().

返回:

memcpy() 函数返回:

  • dest - 目标的内存位置

memcpy() 原型

cstring 头文件中定义的memcpy() 原型为:

void* memcpy(void* dest, const void* src,size_t count);

当我们调用此函数时,它会将 count 字节从 src 指向的内存位置复制到 dest 指向的内存位置。

memcpy() 未定义行为

的行为memcpy()不明确的如果:

  • srcdest 是空指针,或者
  • 对象重叠。

示例 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[]大小105分别。

然后我们使用 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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。