#include <string.h> void *memcpy(void *dest, const void *src, size_t n);
功能:拷贝src所指的内存内容的前n个字节到dest所值的内存地址上。
参数:
返回值:dest的首地址
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <time.h> int main(void) { // 1、数组拷贝 // 内存拷贝 int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int* p = (int*)malloc(sizeof(int) * 10); // 实现栈空间数据拷贝到堆空间 // memcpy(目标, 源, 字节); memcpy(p, arr, sizeof(int) * 10); // 打印输出 for (int i = 0; i < 10; i++) { printf("%d\n", p[i]); } // 释放内存 free(p); // 2、字符串 // 内存拷贝 char ch[] = "hello \0world"; char str[100]; // 拷贝:到\0停止 strcpy(str, ch); printf("%s\n", str); // 内存拷贝:拷贝内容与字节有关 memcpy(str, ch, 13); printf("%s\n", str); // 3、拷贝内存重叠 // 如果拷贝的目标和源发生重叠,可能报错 int arr2[] = { 1,2,3,4,5,6,7,8,9,10 }; memcpy(&arr2[5], &arr2[3], 20); for (int i = 0; i < 10; i++) { printf("%d\n", arr2[i]); } return 0; }
原文:https://www.cnblogs.com/xiangsikai/p/12379901.html