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

memcpy内存比较函数;memset内存设置函数

考虑许久,笔者最终还是将这两个函数放在一块进行讲解!主要还是在于:这两个函数,不怎么常见,所以,我们知道大概就行!不用刨根接地的去理解太过于深奥的问题!所以,在此,笔者将这两个进行联立起来讲解!!

若是……嗯,不喜勿喷!

1.memcmp内存比较函数:使用语法为:

int memcmp ( const void * ptr1, const void * ptr2, size_t num )

 主要的意思是:比较从ptr1 和 ptr2指针开始的num个字节

若是:ptr1 > ptr2  :   返回一个大于0的数字:1

          ptr1 = ptr2   :返回0

          ptr1 < ptr2   :返回一个小于0的数字:-1

主要的代码使用过程为:

#include <stdio.h>

int main()
{
    int arr1[] = { 1,2,3,4,5 };
    //1--->01 00 00 00  (4个字节)
    //2--->02 00 00 00
    //3--->03 00 00 00
    //4--->04 00 00 00
    //5--->05 00 00 00
    int arr2[] = { 1,2,3,0,0 };
    int ret = memcmp(arr1, arr2, 12);
    //比较前12个字节
    if (ret < 0)
    {
        printf("arr1<arr2");
    }
    else if (ret > 0)
    {
        printf("arr1>arr2");
    }
    else
    {
        printf("arr1==arr2");
    }
    return 0;
}

代码的运行结果为:

 上面就是 memcmp主要的使用过程!!

2.下面笔者就memset内存设置函数,进行简单的讲解!!

memset函数的使用语法为:

void * memset ( void * ptr, int value, size_t num )

在这里的主要意思为:将ptr所指向的num个字节,设置为指定的value!!

请看笔者的使用过程!!

#include <stdio.h>

int main()
{
    int arr[] = { 1,2,3,4,5 };
    memset(arr, 0, 8);
    int i = 0;
    for (i = 0; i < 5; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

代码的运行结果为:

 其实,对于该段代码,我们可以通过:监视内存来观察!

请看笔者的监视过程!

在刚开始时候:    int arr[] = { 1,2,3,4,5 };

 当代码运行到:    memset(arr, 0, 8);  部分的时候:

 

上面就是这两个代码的主要运行过程!

相关文章:

  • 【0基础学习mysql】之DQL-聚合函数、分组查询及排序查询
  • 【Redis】回顾下Redis基础知识点,还记得哪些?
  • redis五种数据类型内部构造
  • 基于Vue+Element UI+SSM+SpringCloud的员工管理系统
  • LeetCode刷题---二分查找巩固
  • 简单概述理解vue的MVVM模型
  • 24、Java——银行存款取款系统(对象+集合)
  • Python 集合
  • 【DS】5.二叉树大总结!
  • 攻防世界 web2
  • 机器人运动学标定:基于公垂线模型的指数积标定——减少标定参数,避免过度约束
  • 机器学习模型的集成方法总结:Bagging, Boosting, Stacking, Voting, Blending
  • 全志 Melis-4.0(rt-thread内核) 环境搭建与初步编译介绍
  • JUC 中的线程池入门(其实没有那么难)
  • 派福利!通过 Azure 零成本进入 CUDA 编程
  • 深入了解以太坊
  • 2017 前端面试准备 - 收藏集 - 掘金
  • centos安装java运行环境jdk+tomcat
  • create-react-app项目添加less配置
  • golang 发送GET和POST示例
  • JavaScript-Array类型
  • JavaScript异步流程控制的前世今生
  • js对象的深浅拷贝
  • js如何打印object对象
  • leetcode386. Lexicographical Numbers
  • vue.js框架原理浅析
  • 大主子表关联的性能优化方法
  • 仿天猫超市收藏抛物线动画工具库
  • 给Prometheus造假数据的方法
  • 计算机在识别图像时“看到”了什么?
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 收藏好这篇,别再只说“数据劫持”了
  • 算法之不定期更新(一)(2018-04-12)
  • Prometheus VS InfluxDB
  • 说说我为什么看好Spring Cloud Alibaba
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • $$$$GB2312-80区位编码表$$$$
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (四) 虚拟摄像头vivi体验
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转载)Linux网络编程入门
  • (转载)从 Java 代码到 Java 堆
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • . NET自动找可写目录
  • .gitignore文件设置了忽略但不生效
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net framework4与其client profile版本的区别
  • .net对接阿里云CSB服务