各位大侠能解释下下面这段内存拷贝函数吗?

wohu007 2012-04-18 09:57:25

写函数完成内存的拷贝 一个内存拷贝函数的实现体

解释下各行的含义,小弟实在是看不懂


void *memcpy(void *pvTo,const void *pvFrom,size_t size)

{

assert((pvTo!=NULL)&&(pvFrom!=NULL));

byte *pbTo=(byte*)pvTo;
byte *pbFrom=(byte*)pvFrom;

while (size-- >0)

*pbTo++ = *pbForm++;
return pvTo;
}
...全文
153 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ken_scott 2012-04-19
  • 打赏
  • 举报
回复
第一句叫断言, assert(表达式); 表达式的值必须为真(pvTo和pvFrom都不能为空指针), 否则程序会在这一行报错退出(原因是 不能对空指针解引用 (*NULL))
第二, 第三句就是类型转换了, 理由是(void *)的指针移动(++/--/+=/-=)不知道要移动多大, 所以(void *)类型的指针是不能移动的, 所谓内存拷贝(按字节拷贝), 就是拷贝后 目的对象与源对象 的各字节都相同, 所以, byte是一个字节大小的类型, 比如char, unsigned char, signed char什么的, 通常byte是个typedef:
typedef unsigned char byte;
后面两行相当与:
while (size > 0) {
*pbTo = *pbFrom; /* 将pbTo指向字节的值 置成 pbFrom指向字节的值 */
++pbTo; /* pbTo指向目的对象的下一个字节 */
++pbFrom; /* pbFrom指向源对象的下一个字节 */
--size;
}
应该明白了吧
猪头小哥 2012-04-18
  • 打赏
  • 举报
回复
你程序看不懂得话就用铅笔画图,把它的流程走一遍,我个人觉得这是个很好的学习方法,为什么是用铅笔,因为它修改起来容易,书面效果也很好的,可以试试吧!
猪头小哥 2012-04-18
  • 打赏
  • 举报
回复
C语言里面没有byte*类型吧?我前几天也看到这个程序了,在vs里面有错误,说byte *没定义什么的!
独自听枫 2012-04-18
  • 打赏
  • 举报
回复
就是进行拷贝赋值啊,有啥看不懂的,不过BYTE应该是unsigned char类型的吧
源码链接: https://pan.quark.cn/s/a4b39357ea24 在本研究中,我们将详细研究如何借助Python执行数据可视化,旨在剖析2018年期间中国四个主要城市——北京、上海、广州以及深圳的空气质量状况。通过绘制反映空气质量指数(AQI)与细颗粒物(PM2.5)变化趋势的图表,我们能够深入理解这些大都市全年的空气环境质量,并明确评估其优良天气所占的比重。 我们必须首先进行数据准备工作。在当前提供的压缩文件内,名为"2018天气"的文件极有可能是数据来源,其中可能收录了涉及四个城市每日空气质量监测的详细信息。这些数据通常涵盖日期、城市名称、AQI数值、PM2.5含量等核心参数。在Python编程环境中,我们惯常运用pandas库来对这类结构化数据进行高效的处理和分析。 1. **数据导入与初步处理**: - 利用`pandas.read_csv()`方法来导入存储为CSV格式的数据资料。 - 数据整理:对数据中的空白项、非正常数值进行修正,保证数据的精确性。 - 调整日期字段的格式,确保其能够适用于时间序列分析的需求。 2. **数据深度分析**: - 针对每个城市的AQI和PM2.5数据执行统计性描述,例如计算平均值、中位数、标准偏差等指标。 - 确定空气质量良好天气的天数,即那些AQI值低于75(依据中国的空气质量评估标准)的日数。 3. **数据呈现**: - 运用matplotlib或seaborn工具绘制折线图,直观展示四个城市在2018年全年的AQI和PM2.5变化动态。 - 可通过采用不同的颜色方案和线条类型来区分不同城市的数据系列。 - 添加必要的图示元素,如日期坐标轴、城市名称标注、图表标题及图例说明,以提升图表的可读...

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧