2021-6-8笔记梳理

目录

memcpy——内存拷贝

参数

用法

工作原理

memmove——内存移动(其实和内存拷贝意思一样)

 参数

用法

工作原理

区别

 注意事项


memcpy——内存拷贝

memcpy - C++ Reference (cplusplus.com)

memory——计算机里是内存的意思

copy ——复制

结合起来就是内存拷贝

参数

void* memcpy(char* destination, const char* source, size_t num);

char* destination 目的地,就是要拷贝到哪——给个首地址

char* source        源,从哪拷贝                  ——也是首地址

size_t num           要拷贝的字节数               ——是字节数,不是个数

用法

int main()
{
    int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
    int arr2[20] = { 0 };
    memcpy(arr2, arr1, 20);//这里要拷贝1,2,3,4,5,共20字节
    return 0;
}
//结果就是arr2[20] = { 1,2,3,4,5 };

工作原理

因为传的两个参数是 void* 的,作为库函数的实现者,他是不知道使用的人到底传什么参数,所以用void* 来接收两个首地址,不知道你要拷贝整形,结构体还是别的,所以就用字节个数作为拷贝长度。那么问题来了,用void* 和字节个数有什么用呢,下面我简单模拟实现一下库函数

​void* my_memcpy(void* destination, const void* source, size_t num)
{
	assert(destination && source); //断言,检查源和目的是不是空指针     
	char* p1 = (char*)destination; //强制类型转换,转换成char*之后,就可以不用管你是什么类型的
	char* p2 = (char*)source;      //变量,都按一个字节算,拷贝的时候一个字节一个字节的拷贝
	while (num--)
	{
		*p1++ = *p2++;             //memcpy是从源首地址的第一个字节拷贝到
                                   //目的地址的首地址的第一个字节开始拷贝到最后一个
	}
	return destination;

memmove——内存移动(其实和内存拷贝意思一样)

memmove - C++ Reference (cplusplus.com)

 参数

和memcpy的一样

用法

和memcpy的一样,那么问题来了,这两个是一样的吗?

不一样

工作原理

void* my_memmove(void* destination, const void* source, size_t num)
{
	assert(destination && source);
	char* p1 = (char*)destination;
	char* p2 = (char*)source;

	while (num--)
	{
		*(p1 + num - 1) = *(p2 + num - 1); //从源地址的最后一个字节开始拷贝,
	}                                      //拷贝到目的地最后一个字节
                                           //从最后一个字节开始拷贝到第一个字节
	return destination;
}

区别

 注意事项

我们知道了memcpy和memmove 的具体实现原理,没有内存重叠的时候都是一样的用法,要是拷贝的内存有重叠的地方就有可能出现问题,那么具体是用memcpy还是memmove,可以画一个我给出的那种图,一目了然

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 华为HCIP精品课程笔记-Wakin是一本非常有价值的学习资料。该笔记通过详细介绍HCIP认证的相关知识点和实用技能,为学生提供了一种高效学习的方式。 首先,华为HCIP精品课程笔记-Wakin涵盖了HCIP认证考试需要掌握的全部知识点。对于想要通过HCIP考试的学生来说,这本笔记提供了一个简明扼要的指南,可以帮助他们系统地学习和复习相关知识。笔记中的内容分为多个章节,涵盖了网络技术、路由器和交换机、路由控制、IP多播、IPv6和MPLS等重要主题。每个主题都有详细的解释和示例,帮助学生更好地理解和掌握。 其次,华为HCIP精品课程笔记-Wakin还包含了一些实用技能和案例分析。这些内容能够帮助学生更好地理解和应用所学知识。对于在实际工作中需要应用HCIP技能的人来说,这本笔记提供了一些宝贵的经验和建议。 此外,华为HCIP精品课程笔记-Wakin还提供了一些习题和练习题,可以帮助学生检验自己的学习成果。通过对这些习题的练习,学生可以更好地了解自己的薄弱点,并进行有针对性的复习和提高。 总之,华为HCIP精品课程笔记-Wakin是一本非常实用和有价值的学习资料。它提供了一种高效的学习方式,帮助学生系统地掌握和应用HCIP认证的相关知识和技能。我强烈推荐这本笔记给所有想要通过HCIP考试或者在实际工作中应用HCIP技能的人。 ### 回答2: 《华为HCIP精品课程笔记-wakin》是一本非常有价值的学习资料。这本书由华为公司精心编撰而成,旨在帮助学员高效学习和掌握华为认证网络工程师(HCIP)认证所需的知识和技能。 这本笔记深入浅出地介绍了HCIP认证相关的重要概念、原理和应用。其中包括了网络架构设计、路由与交换技术、安全技术、无线网络技术等内容。每个主题都有详细的解释、示意图和实例,使读者能够更好地理解和应用知识。 除了内容丰富全面外,这本笔记还具有一些独特的优点。首先,它采用了华为独有的学习方法,系统化地梳理了知识结构,使读者能够更加有条理地学习。其次,每个章节都附带了重点整理的要点,方便读者快速回顾和温习。此外,为了帮助读者更好地理解,笔记还提供了一些实验和实际案例,使学习更加实践性和深入。 通过学习《华为HCIP精品课程笔记-wakin》,读者将能够全面了解和掌握HCIP认证所需的知识和技能。这些知识和技能不仅适用于工作中的网络工程师,也对于其他相关岗位的人员有很大的帮助。无论是对于初学者还是对于有一定经验的人来说,这本书都是一本非常实用的学习资料。强烈推荐给所有对网络工程感兴趣的人士。 ### 回答3: 华为HCIP精品课程笔记-Wakin是一份非常有价值的学习资料。这份笔记由华为公司的专业培训师Wakin编写,对于想要学习和提升HCIP认证的人来说,是一份非常实用的参考资料。 Wakin在这份笔记中,详细地介绍了HCIP的知识点和考试重点。他从网络基础、路由交换、安全技术、无线网络等多个方面入手,深入浅出地解释了每个知识点的概念和原理。在每个章节中,Wakin都给出了一些实际案例和实验,帮助我们更好地理解和应用所学内容。 此外,Wakin在笔记中还提供了一些学习方法和技巧。他建议我们在学习过程中,要注重实践,通过自己动手实验和配置设备来加深对知识的理解。他还推荐了一些学习资源和参考书籍,帮助我们更好地补充和扩展所学知识。 总的来说,华为HCIP精品课程笔记-Wakin非常全面且易于理解。无论是准备HCIP认证考试的人,还是想要进一步提升自己网络技术的人,都可以从中受益匪浅。我相信,只要认真学习并灵活运用这份笔记中的知识,就能够在网络领域中取得更好的成绩和发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值