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

建设银行建湖支行官方网站app开发费用一般多少钱

建设银行建湖支行官方网站,app开发费用一般多少钱,医疗美容网站建设方案,带有网页的建筑公司模拟实现C语言–memcpy函数和memmove函数 文章目录 模拟实现C语言--memcpy函数和memmove函数一、memcpy函数和memmove函数1.1 memcpy函数是什么1.1 memmove函数是什么 二、使用示例2.1 从起始位置复制2.2 从任意位置复制 三、模拟实现3.1 模拟实现1--memcpy函数3.2 针对缺点改进…

模拟实现C语言–memcpy函数和memmove函数

文章目录

  • 模拟实现C语言--memcpy函数和memmove函数
  • 一、memcpy函数和memmove函数
    • 1.1 memcpy函数是什么
    • 1.1 memmove函数是什么
  • 二、使用示例
    • 2.1 从起始位置复制
    • 2.2 从任意位置复制
  • 三、模拟实现
    • 3.1 模拟实现1--memcpy函数
    • 3.2 针对缺点改进的模拟实现2--memmove函数
      • 3.2.1 刨析原因
      • 3.2.2 改正方法
      • 3.2.3 代码--模拟实现memmove函数
      • 3.2.4 memcpy函数和memmove函数平台问题


一、memcpy函数和memmove函数

1.1 memcpy函数是什么

void * memcpy ( void * destination, const void * source, size_t num );
  1. strcpy函数是字符串拷贝函数,只能拷贝字符串,而其他类型无法使用strcpy函数拷贝
  2. 而memcpy函数属于内存拷贝函数,可以拷贝其他类型。

1.1 memmove函数是什么

void * memmove ( void* destination, const void * source, size_t num );
  • 和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。
  • 如果源空间和目标空间出现重叠,就得使用memmove函数处理。

二、使用示例

  1. 函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。
  2. 这个函数在遇到 ‘\0’ 的时候并不会停下来
  3. 如果source和destination有任何的重叠,复制的结果都是未定义的。

2.1 从起始位置复制

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <string.h>
int main()
{int i = 0;int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] = { 0 };memcpy(arr2, arr1, 20);for (i = 0; i < 10; i++){printf("%d ", arr2[i]);}return 0;
}

在这里插入图片描述

2.2 从任意位置复制

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <string.h>
int main()
{int i = 0;int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] = { 0 };memcpy(arr2, arr1+2, 20);for (i = 0; i < 10; i++){printf("%d ", arr2[i]);}return 0;
}

在这里插入图片描述

三、模拟实现

3.1 模拟实现1–memcpy函数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <string.h>
#include <assert.h>void* my_memcpy(void* destination, const void* source, size_t num)
{void* ret = destination;assert(destination);assert(source);/** copy from lower addresses to higher addresses*/while (num--) {*(char*)destination = *(char*)source;destination = (char*)destination + 1;source = (char*)source + 1;}return(ret);
}
int main()
{int i = 0;int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] = { 0 };my_memcpy(arr2, arr1+2, 20);for (i = 0; i < 10; i++){printf("%d ", arr2[i]);}return 0;
}

在这里插入图片描述

3.2 针对缺点改进的模拟实现2–memmove函数

模拟实现1的代码有一个缺陷,就是不能进行自我拷贝

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <string.h>
#include <assert.h>void* my_memcpy(void* destination, const void* source, size_t num)
{void* ret = destination;assert(destination);assert(source);/** copy from lower addresses to higher addresses*/while (num--){*(char*)destination = *(char*)source;destination = (char*)destination + 1;source = (char*)source + 1;}return(ret);
}
int main()
{int i = 0;int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] = { 0 };my_memcpy(arr1+2, arr1, 20);for (i = 0; i < 10; i++){printf("%d ", arr1[i]);}return 0;
}

在这里插入图片描述

3.2.1 刨析原因

在这里插入图片描述

3.2.2 改正方法

在这里插入图片描述

  1. 当dst指针指向的地址在src指针指向位置的右边时,这种情况的赋值应该从后向前赋值,就是12345,先让5赋值在7的位置,依次循环
    在这里插入图片描述
  2. 当dst指针指向的地址在src指针指向位置的右边时,这种情况的赋值应该从前向后赋值,34567,先将3赋值给1的位置,依次循环

3.2.3 代码–模拟实现memmove函数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <string.h>
#include <assert.h>void* my_memmove(void* destination, const void* source, size_t num)
{void* ret = destination;assert(destination);assert(source);if (destination < source){//从前向后赋值while (num--){*(char*)destination = *(char*)source;destination = (char*)destination + 1;source = (char*)source + 1;}}//从后向前赋值else{while (num--){*((char*)destination+num)= *((char*)source+num);}}return ret;
}int main()
{int i = 0;int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] = { 0 };my_memmove(arr1+2, arr1, 20);for (i = 0; i < 10; i++){printf("%d ", arr1[i]);}return 0;
}

在这里插入图片描述

3.2.4 memcpy函数和memmove函数平台问题

目前在vs环境下,这两个函数基本没有区别,memcpy也可以解决内存重复的问题。别的平台可能还是会有这个问题

http://www.hkea.cn/news/250126/

相关文章:

  • 安庆做网站seo建站收费地震
  • 绵阳住房和城市建设局网站官网seo排名优化联系13火星软件
  • 网站开发建设费用关键词异地排名查询
  • 网站建设企业电话广州优化疫情防控举措
  • 重庆模板网站建设百度网站域名注册
  • 安徽建设厅网站地址网络广告推广方式
  • 门户网站内容管理建设方案企业关键词优化推荐
  • 北京网站建设公司飞沐小学生一分钟新闻播报
  • 企业网站建设申请域名seo赚钱
  • 2017网站开发前景百度网盘资源链接入口
  • 平面广告设计主题seo是怎么优化上去
  • 正规网站制作公司哪家好四年级写一小段新闻
  • 济南网站建设安卓版快手seo
  • java开发兼职网站开发线上推广平台
  • 北京网站建设开发公司网站自动收录
  • wordpress最多多少用户seo基础知识
  • 湘潭做网站 去磐石网络b站推出的短视频app哪个好
  • 宿迁做网站的公司有人看片吗免费观看视频
  • 什么人最需要建设网站淘宝运营一般要学多久
  • 海南网站优化东莞免费建站公司
  • 传播型网站建设优势有哪些推广类软文
  • 如何在百度做网站推广赚钱的软件
  • c# 网站开发教程周口网站seo
  • 湘西网站建设帮人推广注册app的平台
  • 切图做网站web制作网站的模板
  • 网站的做网站公司哪家好网络优化大师app
  • 国内外包网站今日头条(官方版本)
  • 外网建筑设计网站线上渠道推广有哪些方式
  • 厦门做网站公司排名电工培训机构
  • 武汉网站设计制作外包公司的人好跳槽吗