当前位置: 首页 > news >正文

怎样做安居客网站短视频app开发

怎样做安居客网站,短视频app开发,织梦dedecms网站内容页,中国上市公司100强排行榜c语言系列 文章目录 c语言系列一、memmove函数介绍1.1、函数基本功能1.2、函数参数2.3、函数返回值 二、memmove的使用2.1、拷贝字节不可大于目标空间2.2、同一空间拷贝 三、函数功能的模拟实现3.1、函数参数及其返回值的设定3.2、函数体实现 四、代码实现 一、memmove函数介绍…c语言系列 文章目录 c语言系列一、memmove函数介绍1.1、函数基本功能1.2、函数参数2.3、函数返回值 二、memmove的使用2.1、拷贝字节不可大于目标空间2.2、同一空间拷贝 三、函数功能的模拟实现3.1、函数参数及其返回值的设定3.2、函数体实现 四、代码实现 一、memmove函数介绍 下面为该函数基本功能的介绍 1.1、函数基本功能 memmove的功能是将source指针指向空间的前num个字节拷贝到detination指针指向的空间不同于memcpy函数的是memmove函数允许两个指针指向的空间有重合。 1.2、函数参数 第一个参数它是无类型指针void*指向要拷贝的目标地址因此也称为目标指针。 第二个参数它是const修饰的无类型指针void*,指向要拷贝的源地址因此称为源指针。 注const修饰指针类型时在*之前修饰代表该指针指向对象的内容不能被修改(地址里的内容不能改);在 * 之后修饰代表该指针指向的对象不能被修改(指针本身不能被修改) 第三个参数无符号整型代表拷贝字节数拷贝字节不可能为负数 2.3、函数返回值 无类型指针(void*),函数运行结束后返回拷贝后的目的地内存块的起始地址. 二、memmove的使用 memove的返回值及两个参数的类型均为void*这也就意味着它可以适应绝大多数类型。相信绝大多数人来学习这个函数都是因为碰到了memcpy解决不了的场景了而memmove相比之memcpy最大的优点就是在面对目的地内存块和源头内存块重叠空间是依然可以安全的进行拷贝操作当然对于不重叠情况它依然是可以解决的。 下面我们来演示一下拷贝中可能遇到的情景以便我们接下来的模拟实现,对下面的情况在模拟时我会再仔细分析的。 2.1、拷贝字节不可大于目标空间 int main() {int arr1[10] { 1,2,3,4,5,6,7,8 };int arr2[5] { 0 };memmove(arr2, arr1, sizeof(arr1[0])*8);//sizeof(arr1[0])*8,代表拷贝八个数组元素的字节return 0; }当拷贝空间大于目标空间时程序崩溃。 2.2、同一空间拷贝 情况一 拷贝源空间与目的空间不重合代码及执行结果 int main() {int arr[10] { 1,2,3,4,5,6,7,8 };memmove(arr8, arr, sizeof(arr[0])*2);for (int i 0; i 10; i){printf(%d , arr[i]);}return 0; }画图分析 将source指向空间的前两个元素拷贝到detination指向的空间detination指向空间不足没有影响。 情况二 拷贝源空间与目标空间存在重合空间且source指向空间在前这里要注意我对数组首元素地址进行加法操作arr1等指针是向后走的也就是说后面指针大于前面 代码及其运行结果 int main() {int arr[10] { 1,2,3,4,5,6,7,8 };memmove(arr3, arr, sizeof(arr[0])*4);for (int i 0; i 10; i){printf(%d , arr[i]);}return 0; }画图分析 情况三 拷贝源空间与目标空间存在重合空间且detination指向空间在前 代码及其运行结果 int main() {int arr[10] { 1,2,3,4,5,6,7,8 };memmove(arr, arr3, sizeof(arr[0])*4);for (int i 0; i 10; i){printf(%d , arr[i]);}return 0; }画图分析 三、函数功能的模拟实现 在实现过程中我们对标库中的定义以及需要具备的功能来模拟完成它。 3.1、函数参数及其返回值的设定 由于memmove函数本身就是内存拷贝函数并没有参数和返回类型的限定我们这里同库中一样即可。 3.2、函数体实现 在上面使用部分的讲解中我们几乎将所有可能出现的情况都给大家展示出来了异地空间拷贝同上接下来我们只需实现一个可以满足这些功能的函数体及可其它细节问题会在代码部分讲解。 情况一分析 我用蓝色代表源空间待拷贝资源红色代表目的空间 从前往后拷贝 从后往前拷贝 进入函数先把指针先后移动 这种情况没有涉及源空间与目标空间的重合问题所有是很简单的无论是从前往后拷贝还是从后往前拷贝都是可以完成的。 情况二分析 博主手残画的丑大家见谅 从前向后拷贝数据4就会盖. 当源指针指向空间与目标空间重合且源指针在目标指针前面时sourcedetination我们必须从后往前拷贝才不会发生数据覆盖。 情况三分析 数据覆盖 当源指针指向空间与目标空间重合且目标指针在源指针】前面时detinationsource我们必须从前往后拷贝才不会发生数据覆盖。 四、代码实现 对于异地拷贝时无论是从前往后拷贝还是从后向前拷贝都是可以完成拷贝的。。 void* my_memmove(void* destination, void* source, size_t num) {assert(destinationsource);//判断是否为空指针char* dest (char*)destination;const char* src (char*)source;if (destination source)//对标情况三{while (num--){*dest *src;}}else//对标情况二{while (num--){*(dest num) *(src num);}}return destination; }写代码时才发现上面个第一个指针拼错了但是不影响逻辑大家见谅 文章时我在复习时写的如果哪有错误可以私信我万分感谢
http://www.w-s-a.com/news/166347/

相关文章:

  • 设计大神云集的网站是南通市 网站设计
  • 心理咨询网站模板企业画册封面设计
  • 做网站 南京网站建设的重难点分析
  • 深圳做网站980移动网站开发语言
  • 网站评论怎么做seo关键词优化方法
  • 市级部门网站建设自评报告网站优化文章怎么做
  • 可不可以异地建设网站学做网站培训班要多少钱
  • 茌平网站建设公司免费的云服务器有哪些
  • 手机网站单页面铜陵网站制作公司
  • 网站logo怎么做才清晰千库网官网首页登录
  • 山西省建设银行网站首页长沙网站建设制作
  • 襄阳市做网站 优帮云百度搜索次数统计
  • 自己做视频直播网站盐城做网站多少钱
  • 买个网站服务器多少钱重庆做的好的房产网站
  • 深圳定制建站网站建设推广关键词怎么设置
  • 宝山网站建设 网站外包修改wordpress版权
  • 建立网站的基本步骤新网站多久会被百度收录
  • 软件设计开发流程图廊坊关键词seo排名方案
  • 南山住房和建设局网站网站被k 多久恢复
  • 阿里买域名 电脑做网站做简历哪个网站好
  • 个人网站免费服务器单页网站的域名
  • 网站设计简单讲解小店怎么做网站
  • 校园网站的意义wordpress去除更新
  • 网站开发用python吗常用的网页开发工具有哪些
  • 北京市住房建设投资建设网站做商城网站要哪些流程
  • seo网站改版杭州建设局官网
  • 物流网站建设策划书泰然建设网站
  • 百度做网站的费用采集发布wordpress
  • 网站运维公司有哪些防录屏网站怎么做
  • 昆明做网站seo的网站制作专业