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

分类: 计算机技术
推荐阅读:
Visual Studio Code 配置Python开发环境 首先,请确保你的电脑已经安装了Python,如没有请先安装,建议 3.5.0以上版本;其次,确保你的电脑已经安装了 Visual Studio Code 这个代码编辑器;
WordPress获取指定数量的随机文章(不用插件) 我们希望每次打开网站时,在某个位置生成随机的文章列表,可以通过以下代码实现:
Golang实现获取文件或文件夹的详细信息 golang可通过使用os.Stat()来获取文件或文件夹的详细信息。
如何将Rust更新到最新版 Rust每隔一段时间就会有新的版本,若要将已安装的Rust更新到最新版,并不用先卸载旧的版本,只需要使用 rustup 工具;
python chr()函数 chr() 是 Python 内置函数之一,用于将整数转换为对应的 Unicode 字符。
MySQL ABS() 绝对值函数 ABS(x) 函数返回x的绝对值,如果x为NULL则返回NULL;