数组万能复制——memcpy();

C语言:#include
C++:#include
void *memcpy(void *dest, const void *src, size_t n);
从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中,是用指针进行操作的。
注意:
1.strcpy提供了字符串的复制。即strcpy用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符
2.memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。

strcpy和memcpy主要有以下3方面的区别
1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

memcpy(d,s+12,4);//从第13个字符(V)开始复制,连续复制4个字符(View)到s
d[4]='\0';//必须有这句,不然字符串会乱码
//memcpy(d,s+12*sizeof(char),4*sizeof(char));也可

函数源码

void *memcpy(void *dest, const void *src, int count)
{
	void *ptr = dest;
	if (NULL == dest || NULL == src || count <= 0)
	{
		return NULL;
	}
	while (count--)
	*(char *)dest++ = *(char *)src++;
	return ptr;
}

https://baike.baidu.com/item/memcpy/659918?fr=aladdin#3
http://www.runoob.com/cprogramming/c-function-memcpy.html

你可能感兴趣的:(C语言,OJ刷题)