C语言中memcpy()函数的用法

简介

潜水csdn也有一段时间了,最近复习c语言,好记性不如烂笔头,记录一下自己的所学与所得,如有错误请各位不吝指正。
言归正传,memcpy()是库中一份子。我们不能把一个数组赋值给另一个数组,所以要通过循环的方式把A数组中的每一个元素赋给B数组相应的元素,但有一例外情况:使用strcpy()和strncpy()函数来处理字符数组,memcpy()也提供类似的方法。

函数原型

void *memcpy(void *dest, const void *src, size_t n);

参数

指针dest:指向目标内存首地址,指针dest:指向内存首地址,n:需要copy的字节数。
由于这两个函数设计用于处理任何数据类型,所以它们的参数都是两个指向void的指针,C允许把任何类型的指针赋给void*类型的指针

功能

从源src所指的内存地址的起始位地址起,复制n个字节,到目标dest所指向的内存地址的起始地址的空间内。

需要头文件

#include

返回值

函数返回指向dest的指针

Demo

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 10
void show_array(const int ar[], int n);
int main()
{
	int target[SIZE];
	int values[SIZE]={1,2,3,4,5,6,7,8,9,10};
	puts("memcpy() used:");
	puts("values (original data):");
	show_array(values,SIZE);
	memcpy(target, values, SIZE * sizeof(int));
	puts("target (copy of vaules):");
	show_array(target,SIZE);
	
	return 0;
}

void show_array(const int ar[],int n)
{
	int i;
	for(i=0;i<n;i++)
		printf("%d",ar[i]);
	putchar('\n');
}

编译后输出:

memcpy() used:
values (original data):
1 2 3 4 5 6 7 8 9 10
target (copy of vaules):
1 2 3 4 5 6 7 8 9 10

你可能感兴趣的:(C语言)