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

60.【C语言】内存函数(memset,memcmp函数)

3.memset函数(常用)

*简单使用

memset:memory set

cplusplus的介绍 点我跳转

翻译:

函数

memset


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

填充内存块

ptr指向的内存块的num个字节设置为指定值(解释为无符号char)。

(指针ptr类型为void*,因此可以接受任何类型的数组)

参数


ptr:指向要填充的内存块

value:要设置的值,

num:要设置的字节个数

size_t是无符号整型

返回值

ptr被返回

如将arr数组的每一个字节都设成01

#define   _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{int arr[] = { 1,2,3,4,5 };memset(arr, 1, 5 * 4);//int类型的数组,一个元素占4个字节return 0;
}

 

x86环境下,打开内存窗口

输入&arr

注意内存中每一个元素显示为01 01 01 01

十六进制转十进制:1010101H=16843009D(D为Dec的缩写,十进制)

所以在使用memset时要小心,是以字节为单位操作的!!!

同样对于char类型的数组

#define   _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{char arr[] = { "12345" };memset(arr, 1, 5);return 0;
}

 memset处下断点

执行至return 0;后

char数组每个元素占1个字节,\x1为十六进制的1

注意:用memset改动时要小心,不能越界访问!

否则显示

4.memcmp函数

memcmp:memory compare

cplusplus网的介绍 点我跳转

翻译:

函数

memcmp


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

比较两个内存块

比较分别由ptr1ptr2指向的前num个字节的内存块,如果两者相等,返回0,如果他们两个不同(较大或较小),返回非0数字

注意memcmp不同于strcmp,memcmp找到\0后不会停止比较(免疫\0)

参数

ptr1:指向内存块的指针

ptr2:指向内存块的指针

num:要比较的字节数

返回值


返回一个整型数值表明两个内存块的内容之间的关系

 比较arr1和arr2的前14个字节

#define   _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{int arr1[] = {1,2,3,4,5};int arr2[] = { 1,2,3,4 };int ret = memcmp(arr1, arr2, 14);printf("%d", ret);return 0;
}

x86环境下,打开内存窗口,输入&arr1

第14个字节为画圈处

输入&arr2

第14个字节为画圈处

前14个字节都一样,返回0

相关文章:

  • 剖解环形链表1
  • 【nrm】npm 注册表管理器
  • STM32精确控制步进电机
  • 2025 年 IT 前景:机遇与挑战并存,人工智能和云计算成重点
  • Java面试:ArrayList 和 LinkedList 的区别是什么?谈谈你对ArrayList和LinkedList的理解
  • 基于深度学习的学情智能监测系统设计与实现(PYQT+YOLOv8+训练数据集+论文+部署文档)
  • we3.0里的钱包是什么?
  • 基于python+flask+mysql的音频信息隐藏系统
  • Llama 3.2 90B刚开源就被Molmo-72B全面击败!
  • SpringCloud入门
  • Java Web应用升级故障案例解析
  • 高效处理大规模数据:MATLAB实践指南
  • 828华为云征文|部署敏捷项目管理系统工具 ZenTao
  • 千亿大数据不为人知的数据库缺陷——中看不中用的设置——MySQL大数据优化
  • 第17周 第3章Servlet开发应用实践 ---Servlet启动时加载与错误页面设置
  • 【347天】每日项目总结系列085(2018.01.18)
  • Android优雅地处理按钮重复点击
  • Angular2开发踩坑系列-生产环境编译
  • conda常用的命令
  • eclipse(luna)创建web工程
  • KMP算法及优化
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Mysql数据库的条件查询语句
  • React-redux的原理以及使用
  • scala基础语法(二)
  • 构造函数(constructor)与原型链(prototype)关系
  • 利用jquery编写加法运算验证码
  • 你真的知道 == 和 equals 的区别吗?
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何在GitHub上创建个人博客
  • ​io --- 处理流的核心工具​
  • ​插件化DPI在商用WIFI中的价值
  • #php的pecl工具#
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)计算机毕业设计ssm电影分享网站
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .ai域名是什么后缀?
  • .Net 6.0 处理跨域的方式
  • .Net Winform开发笔记(一)
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .Net中间语言BeforeFieldInit
  • [ C++ ] 继承
  • [AIGC] HashMap的扩容与缩容:动态调整容量以提高性能
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C++] sqlite3_get_table 的使用
  • [C++]四种方式求解最大子序列求和问题
  • [C++进阶]map和set的相关题目
  • [HOW TO]如何在iPhone应用程序中发送邮件