#include<iostream>
#include<cassert>
using namespace std;void *memcpy2(void *memTo, const void *memFrom, size_t size)
{assert((memTo != NULL) && (memFrom != NULL));char *tempFrom = (char*)memFrom;           //保存memFrom首地址char *tempTo = (char*)memTo;while (size-- > 0){*tempTo++ = *tempFrom++;}return memTo;
}int main()
{int x;char strSrc[] = "Hello World ! Fighting!";char strDest[20];cout << "please enter x" << endl;cin >> x;memcpy2(strDest, strSrc, x);strDest[x] = '\0';cout << "strDest:" << strDest << endl;return 0;
}

assert用法参考:
https://www.cnblogs.com/lvchaoshun/p/7816288.html
assert的作用是先计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行
assert是用来避免显而易见的错误的,而不是处理异常的

(char*) p, 将p强制转化为char类型的指针

strcpy和memcpy的区别:
1.复制内容不同。
strcpy复制字符串
memcpy复制任意内容,整型,结构体,类等
2.复制方法不同
strcpy不指定长度,遇’\0’结束
memcpy由参数指定长度
3.用途不同
strcpy一般用于复制字符串
memcpy复制其他类型

手写memcpy函数相关推荐

  1. JS的手写TRIM函数

    JS的手写TRIM函数 转载于:https://www.cnblogs.com/vibratea/archive/2009/07/24/1530109.html

  2. 3 年大厂工作经验面试竟然要我手写 atoi 函数

    文章目录 前言 我遇到的问题 标准库的实现 适合面试手写的 atoi 实现 参考文献 前言 手写代码是面试过程常见的环节之一,但是一般都是手写算法题,此次面试官要我手写一个基本的 C 语言 atoi, ...

  3. 手写Promisify函数

    手写Promisify //分析可得 promisify函数返回一个函数.返回的这个函数,返回值是Promise对象function promisify(f){return function(...a ...

  4. C++之手写strlen函数

    代码: int strlen(const char *str){ assert(str!=NULL); intlen=0; while((*str++)!='\0') len++;return len ...

  5. 手写 bind 函数

    一. 首先bind 函数的三个特点: 1. 改变this指向2. 第一个参数是 this的值后面的参数是 函数接收的参数的值3. 返回值不变 二. 实现第一种:简易版实现 简易版实现 bind 函数 ...

  6. 【面试】手写Power()函数【C++】

    题目:给定一个函数原型,要求实现该函数并且不能使用库函数也不考虑大数问题 函数原型: double Power(double base,int exponent): 代码: #include < ...

  7. vue渲染大量数据如何优化_Vue3 Compiler 优化细节,如何手写高性能渲染函数

    送5本<你不知道的 JavaScript 上卷>点我抽奖,祝大家好运 Vue3 的 Compiler 与 runtime 紧密合作,充分利用编译时信息,使得性能得到了极大的提升.本文的目的 ...

  8. 【OpenCV学习笔记】之六 手写图像旋转函数---万丈高楼平地起

    话说,平凡之处显真格,这一点也没错!  比如,对旋转图像进行双线性插值,很简单吧?  可,对我,折腾了大半天,也没有达到预期效果!  尤其是三个误区让我抓瞎好久: 1,坐标旋转公式.   这东西,要用 ...

  9. 手写 call、apply 及 bind 函数

    之前在bind和apply以及call函数使用中详解总结过bind和apply以及call函数的使用,下面手写一下三个函数. 一.首先call函数 Function.prototype.MyCall ...

最新文章

  1. PHPer常见的面试题总结
  2. 【Matlab】子图添加子序号 (a) (b) (c) 及调整子图间距边距 科研绘图
  3. 【核心API开发】Spark入门教程[3]
  4. 如何将SP1集成到Office 2007安装包
  5. Java 中,类、类对象、泛型之间的转换
  6. Ubuntu安装Navicat正版永久使用方法
  7. mysql 存储过程遍历_Mysql创建存储过程及遍历查询结果
  8. pyinstaller与anaconda python_Win10上Anaconda环境下python3.6安装和使用pyinstaller
  9. 张朝阳:选校草、跑马拉松、开5G峰会 搜狐最近要干这些事
  10. Python学习杂记_1_PyCharm使用的一些收获
  11. java:eclipse:windows开发环境log4j系统找不到指定的路径
  12. 中国电信-应招知识库(专业知识)
  13. 蓝桥杯_单片机_入门基础知识(七)_DS18b20
  14. resulful规范_ResultFul API
  15. World Streamer学习1
  16. 如果把微信和支付宝比作钱包,那么数字人民币对应的是钱包中的内容
  17. 【Unity Shader】实现粒子根据到摄像机的距离渐变
  18. Centos7 安装 Resilio Sync(BT Sync)同步文件
  19. CSP-S/J 2019 (原NOIP)试题+答案
  20. 手机视频监控软件功能需求

热门文章

  1. 数论概论读书笔记 2.勾股数组
  2. 软件-进阶-产品-突破自我
  3. elasticsearch踩坑记录 no handler found for uri [http://localhost:9200/hyy/user/_search] and method [POST
  4. 过年时,把舅舅家 WiFi 搞好了
  5. WinAPI透明窗体SetLayeredWindowAttributes
  6. 操作系统真相还原-编译遇到“__stack_chk_fail_local”错误
  7. java打字_java - 在线打字测试(dazi.kukuw.com)
  8. 吴裕雄--天生自然 诗经:江城子·乙卯正月二十日夜记梦
  9. 耐克搞出个AR系统,可以自主设计运动鞋!
  10. 解决conda install 软件时出现如下错误信息:Preparing transaction: done Verifying transaction: failed