C语言memcpy()函数:复制内存中的内容

memcpy()函数

头文件和函数原型

#include <string.h>
void* memcpy(void* restrict s1,
	const void* restrict s2,
	size_t n);

参数说明:

  • s1:指向目标内存的指针,表示复制的目标位置;
  • s2:指向源内存的指针,表示要复制的数据来源;
  • n:要复制的字节数;

描述

memcpy()是C语言标准库中的一个函数,用于将一段内存的内容复制到另一段内存中;

memcpy()函数将s2指向的对象中的n个字符复制到s1指向的对象;当n为0时,函数不会执行任何复制操作;

在使用memcpy()函数时,应确保参数的合法性,包括源指针和目标指针的有效性以及要复制的字节数的正确性;

返回值

返回目标内存的指针,也就是s1的值;

示例代码

示例一

该示例演示了如何使用memcpy()函数正确的复制字符串;

#include <stdio.h>
#include <string.h>
#include <assert.h>

int main() {
	
	char str1[] = "hello world!";
	char str2[100];
	char* p;

	//将str1复制到str2中
	p = memcpy(str2, str1, strlen(str1) + 1);

	//memcpy返回的指针与str2相同
	assert(p == str2);

	printf("%s\n", str2);

}

程序运行结果

hello world!

需要注意的是,memcpy()函数只是简单的按字节复制内存中的内容,不会考虑字符串的结构和终止符;所以在复制字符串时,要复制的长度应该为字符串的长度+1;

示例二

该示例演示了如何使用memcpy()函数正确的复制数组;

#include <stdio.h>
#include <string.h>
#include <assert.h>

int main() {
	
	int array1[10];

	for (int i = 0; i < 10; i++) {
		*(array1 + i) = i;
	}

	int array2[10];

	memcpy(array2, array1, sizeof(int) * 10);

	for (int i = 0; i < 10; i++) {
		printf("%d ", array2[i]);
	}

}

程序运行结果

0 1 2 3 4 5 6 7 8 0

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/c-functions/memcpy.html

分类: 计算机技术
推荐阅读:
Rust使用cfg来实现不同系统的条件编译 Rust使用cfg来实现不同系统的条件编译
PySide6 QWidget更改窗口标题 PySide6.QtWidgets.QWidget类的成员函数setWindowTitle()用于为窗口更改标题;
Python暴力破解MD5加密字符串 首先,MD5是不可逆的消息摘要算法,也就是说,不能根据MD5值逆向解密出原信息;但是,MD5通常被用于对密码进行处理,而密码长度是有限的,我们只需要配对出这些组合的MD5值,就可以实现所谓的解密,这种方法也叫暴力破解;
pip和pip3有什么区别,用哪个? pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。
cannot fallthrough final case in switch的解决方法 在Go语言中,fallthrough 用于 switch 语句的 case 块中,它将会在当前 case 块执行完后执行下一个 case 块,不论下个 case 块条件是否匹配,但如果 fallthrough 后没有 case ,则会产生 cannot fallthrough final case in switch 的错误。
配置Nginx实现简单的反盗链 本文通过Nginx的配置指令valid_referers来实现简单的图片和其它类型文件的防盗链。