C/C++中的memcpy

本文记录了C/C++中memcpy函数的使用方法,包括所需的头文件、函数原型及注意事项,并提供了一个简单的示例。重点强调了源和目标区域不能重叠,否则应使用memmove函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个函数的用法还是比较简单的,只是经常忘记,所以就记下来吧。

1. 所需头文件

    <string.h>


2. 函数原型

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

(1) 复制指向source位置的num个字节的值直接到指向destination的内存区域中。

(2) source和destination指向的数据类型不用相关,这是二进制复制。

(3) source指向的区域和destination指向的区域不要重叠。

(4) 函数返回destination。

下面是摘自的C/C++ Reference的解释:

Copies the values of num bytes from the location pointed by source directly to the memory block pointed bydestination.
The underlying type of the objects pointed by both the source and destination pointers are irrelevant for this function; The result is a binary copy of the data.
The function does not check for any terminating null character in source - it always copies exactly num bytes.
To avoid overflows, the size of the arrays pointed by both the destination and source parameters, shall be at leastnum bytes, and should not overlap (for overlapping memory blocks, memmove is a safer approach).

3. 例子

/* memcpy example */
#include <stdio.h>
#include <string.h>

int main (void)
{
  char str1[]="Sample string";
  char str2[40];
  char str3[40];
  memcpy (str2,str1,strlen(str1)+1);
  memcpy (str3,"copy successful",16);
  printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
  return 0;
}

输出:


str1: Sample string
str2: Sample string
str3: copy successful

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值