memcpy()函数用C++举个简单的例子
时间: 2024-05-12 22:16:30 浏览: 11
以下是一个简单的例子,演示如何使用memcpy()函数将一个字符串复制到另一个字符串中:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello, world!";
char str2[20];
memcpy(str2, str1, strlen(str1) + 1);
printf("str1: %s\n", str1);
printf("str2: %s\n", str2);
return 0;
}
```
运行结果如下:
```
str1: Hello, world!
str2: Hello, world!
```
在上述代码中,我们首先定义了两个字符数组:`str1`和`str2`。然后,我们使用`memcpy()`函数将`str1`复制到`str2`中。`memcpy()`函数需要三个参数:目标地址、源地址和要复制的字节数。在本例中,目标地址是`str2`,源地址是`str1`,要复制的字节数是`strlen(str1) + 1`,因为我们需要复制字符串末尾的空字符。
最后,我们使用`printf()`函数打印出`str1`和`str2`的值,以验证复制是否成功。
相关问题
c++memcpy函数
C++中的memcpy()函数是一个内存拷贝函数,用于在两个内存区域之间进行块内存复制。它的函数原型如下:
```
void* memcpy(void* destination, const void* source, size_t num);
```
其中,第一个参数destination是目标内存地址,第二个参数source是源内存地址,第三个参数num是要拷贝的字节数。
使用memcpy()函数,可以实现对一个内存区域的拷贝,例如从数组中复制一定数量的元素到另一个数组中,或将一个结构体对象的值复制到另一个结构体对象中。需要注意的是,如果源地址和目标地址有重叠,则memcpy()函数的行为是未定义的。
c++memcpy函数的使用方法
memcpy函数是C语言中用于内存拷贝的函数。它的使用方法如下:
void* memcpy(void* dest, const void* src, size_t size);
其中,dest是目标内存的指针,src是源内存的指针,size是要拷贝的字节数。
注意事项:
1. src和dest所指内存区域不能重叠。
2. memcpy函数按字节进行拷贝,不会遇到'\0'就停止。
3. memcpy可以拷贝任何数据类型的对象,并可以指定拷贝的数据长度。
4. 如果目标内存已经有数据,执行memcpy后会覆盖原有的数据。
以下是一个具体实现memcpy函数的例子:
```c
void* memcpy(void* dst, const void* src, size_t size) {
if (dst == nullptr || src == nullptr || size <= 0) {
return nullptr;
}
char* pdst = nullptr; // 置空防止野指针
char* psrc = nullptr;
// 地址重叠,则从后往前拷贝
if ((src < dst) && ((char*)src + size > (char*)dst)) {
// 两个指针定位到最末尾的地方,防止覆盖
psrc = (char*)src + size - 1;
pdst = (char*)dst + size - 1;
while (size--) {
*pdst-- = *psrc--;
}
}
// 不重叠
else {
// 不必考虑覆盖问题,从前往后拷贝
psrc = (char*)src;
pdst = (char*)dst;
while (size--) {
*pdst++ = *psrc++;
}
}
return dst;
}
```