模拟实现memcpy函数

代码

#include <stdio.h>

// 自定义的内存复制函数,模拟标准库函数memcpy
// 参数 s1 指向目标内存区域
// 参数 s2 指向源内存区域
// 参数 sz 表示要复制的字节数
// 返回值是指向目标内存区域的指针
void* my_memcpy(void* s1, void* s2, int sz) {
    // 保存目标内存区域的起始地址,以便在函数结束时返回
    void* ret = s1;
    
    // 循环sz次,每次复制一个字节
    for (int i = 0; i < sz; i++) {
        // 将源内存区域的第i个字节复制到目标内存区域的第i个位置
        // 通过将s1和s2转换为(char*)类型,我们能够对它们进行逐字节操作
        *((char*)s1 + i) = *((char*)s2 + i);
    }
    
    // 返回目标内存区域的起始地址
    return ret;
}

// 主函数,程序的入口点
int main() {
    // 初始化两个数组,arr1包含6个整数,arr2初始化为10个0
    int arr1[6] = { 1, 2, 3, 4, 5, 6 };
    int arr2[10] = { 0 };

    // 调用自定义的my_memcpy函数,将arr1数组复制到arr2数组中
    // sizeof(arr1)获取arr1数组的大小(以字节为单位)
    my_memcpy(arr2, arr1, sizeof(arr1));
    
    // 打印复制后的arr2数组的前6个元素
    int j = 0;
    for (j = 0; j < 6; j++) {
        // 使用printf函数打印arr2数组的每个元素,后面跟一个空格
        printf("%d ", arr2[j]);
    }
    
    // main函数返回0,表示程序成功执行
    return 0;
}
 

新手尝试,如果有错误还请告诉我(x.x)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值