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

分类: 计算机技术
推荐阅读:
应该掌握的Linux终端常用快捷键 本篇内容将介绍在Linux系统(例如Debian、CentOS、ubuntu等)终端下使用快捷键来加快你的输入速度,节省你的时间;
C语言ispunct()函数:判断字符是否为标点符号 ispunct()是C语言标准库中的一个函数,用于检查一个字符是否为标点符号;如果传入的字符参数是标点符号,则返回非0值,否则返回0;
Python vars()函数 vars() 函数返回对象的属性和属性值的字典。其语法如下:
使用pip安装Python PIL库的正确方法 正确使用pip工具安装Python中PIL库的方法如下:
使用PySide6创建Hello World程序 本文将展示PySide6的hello world程序;程序将创建一个主窗体,在窗体上创建一个按钮,点击按钮将弹出Hello world的消息;
Golang中=和:=的区别 在Golang中,=是赋值运算符,而 :=是声明赋值运算符;使用=进行赋值前,其变量需要已被声明,而使用 := ,变量不需要被声明,且能自动识别被赋值的数据类型;