83 2.百度笔试题 memmove
来源:互联网 发布:各专业软件大全 编辑:程序博客网 时间:2024/06/06 18:07
2.百度笔试题
用C语言实现函数 void * memmove(void *dest, const void *src, size_t n) 。memmove 函
数的功能是拷贝 src 所指的内存内容前 n 个字节到 dest 所指的地址上。
/*2.百度笔试题用C语言实现函数 void * memmove(void *dest, const void *src, size_t n) 。memmove 函数的功能是拷贝 src 所指的内存内容前 n 个字节到 dest 所指的地址上。实现字节拷贝 char是字节 在C/C++标准库函数中存在该函数,它用于将src指向的n个字节的数据拷贝到dest位置。在标准库函数中还存在另外一个函数memcpy,它也用来实现内存拷贝,但它不考虑区间重叠问题,在拷贝过程中可能造成重叠错误。而memmove则针对上诉问题给出了一定的处理措施来防止拷贝出错:(1)当源内存的首地址等于目标内存的首地址时,不进行任何拷贝(2)当源内存的首地址大于目标内存的首地址时,实行正向拷贝(3)当源内存的首地址小于目标内存的首地址时,实行反向拷贝为了防止src+n<des 有重叠 实行倒着拷贝 则不会覆盖 下面给出memmove的具体实现,关于memcpy可参考库函数实现或相关资料。*/ #include <stdio.h>#include <assert.h>void *memmove(void *dest,const void *src, size_t n) { if (NULL==dest|| src==NULL) { cerr<<"NULL pointers!"; return NULL; } int step; char *p, *q; if ((char *)src==(char *)dest) //(1) return dest; else if ((char *)src>(char *)dest) //(2){ step=1; p=(char *)src; q=(char *)dest; } else// (3){ step=-1; p=(char *)src+n-1; q=(char *)dest+n-1; } for(int i=0;i!= n;++i){ *q=*p; p+=step; q+=step; } return dest; }
0 0
- 83 2.百度笔试题 memmove
- 笔试题:写出memmove原型
- 百度网上笔试题
- 百度网上笔试题
- 百度网上笔试题
- 百度笔试题
- 百度网上笔试题
- 百度笔试题
- 2006百度笔试题
- 百度网上笔试题
- 百度笔试题
- 2007百度笔试题
- 百度笔试题 [软件工程师]
- 百度笔试题
- 2007百度笔试题
- 百度部分笔试题
- 08百度笔试题
- 08百度笔试题
- 83.第 3 组百度面试题 数组使得数组左边为奇数,右边为偶数
- hdoj 1231 最大连续子序列(动态规划)
- Java实现选择电脑路径的方法
- 稳定匹配问题
- cocos2dx 3.3 跑酷游戏 信息层
- 83 2.百度笔试题 memmove
- Android入门-事件响应方法
- java 进制转换
- 计算机视觉文献与代码资源
- 1.cocos2dx内存管理和CCArray,CCMenuItem
- Servlet读取properties资源文件
- 类的大小
- 字符串+数组模拟大整数乘法
- 常用网站记录