关于memset和0x3f

int a[100];
memset(a,0x3f,sizeof(a) );

0x3f=0011 1111=63
C++中int型变量所占的位数为4个字节,即32位
0x3f显然不是int型变量中单个字节的最大值,应该是0x7f=0111 1111 B
那为什么要赋值0x3f:

  1. 作为无穷大使用
    因为4个字节均为0x3f时,0x3f3f3f3f的十进制是1061109567,也就是10^ 9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。
  2. 可以保证无穷大加无穷大仍然不会超限。
    另一方面,由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不会溢出(这就满足了“无穷大加一个有穷的数依然是无穷大”),事实上0x3f3f3f3f+0x3f3f3f3f=2122219134,这非常大但却没有超过32-bit int的表示范围,所以0x3f3f3f3f还满足了我们“无穷大加无穷大还是无穷大”的需求。

首先要知道memset函数是对字节为单位进行赋值的;
void *memset(void *s, int ch, size_t n);
函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
其实这里面的ch就是ascii为ch的字符;
将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值

memset用法 重要!
https://www.cnblogs.com/handsomecui/p/4723949.html

sizeof()参数为数组名和指针变量的不同,sizeof(data)=44 此处为确为数组长度,即int长度乘以个数,4x11=44

sizeof用法
https://blog.csdn.net/qq_33344148/article/details/81361325

对于不同的数据类型,如int ,double,float ,此时memset的赋值可能有变化
对于不同数据类型,memset作用有区别

关于memset函数和赋值0x3f,2021-5-5相关推荐

  1. memset函数的赋值

    memset函数逐字节进行初始化.(每个字节8个二进制位) 如果想要将数组中的每个元素初始化成0,直接memset(数组名,0,数组长度)即可. 但是如果想将数组赋值成2,再memset(数组名,2, ...

  2. memset()函数的赋值问题

    用memset进行赋值操作 int a[3]; char b[3]; memset(a,0,sizeof(a)); 0 0 0 memset(a,1,sizeof(a)); 16843009 1684 ...

  3. memcpy、memmove、memcmp、memset函数的使用说明和模拟实现

    在前面的文章中,我已经对字符串函数进行了详细的介绍和模拟实现,今天,我来讲解另一类函数----------内存函数. 这里写目录标题 memcpy函数 memmove函数 memcmp函数 memse ...

  4. memset()函数的用法详解

    前言 最近做题时突然想到用memset给数组的元素赋值100,但是发现结果和想象中的不一样 通过debug看到数组中的元素的值都为1684300900,而明明给它的是100,这是为什么呢,于是查阅了一 ...

  5. 函数解析|memset()函数的原理

    文章目录 1.函数原理 # 两个特例 如何将int类型的数字赋值为1 ? 2.日常方法 2.1初始化字节 2.2 初始化其他数据类型 2.3 初始化结构体 竞赛中Memset中无穷大常量的设定技巧 1 ...

  6. fill和memset函数(C++)

    memset函数 头文件 #include<string.h> 因为memset函数按照字节填充,所以一般memset只能用来填充char型数组,(因为只有char型占一个字节)如果填充i ...

  7. memset()函数用法及其作用

    memset()函数原型是: extern void *memset(void *buffer, int c, int count) //buffer:为指针或是数组, //c:是赋给buffer的值 ...

  8. 【转】C语言的memset函数

    http://vip.6to23.com/tenax/clib/string/memset.htmlhttp://hi.baidu.com/longchengjiang/blog/item/32c0e ...

  9. memset函数及其用法,C语言memset函数详解

    在前面不止一次说过,定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构.在使用数组的时候经常因为没有初始化而产生"烫烫烫烫烫烫"这样的野值,俗称"乱码 ...

  10. 【C / C++ 】memset函数

    目录 memset函数介绍 用法案例 memset函数介绍 概念: memset是计算机中C/C++语言初始化函数.作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工 ...

最新文章

  1. php要用到哪些软件吗,php开发需要用什么程序
  2. 图像有用区域 bfs
  3. ARM 之九 Cortex-M/R 内核启动过程 / 程序启动流程(基于ARMCC、Keil)
  4. PHP工厂模式计算面积与周长
  5. CVPR2019 Oral!伯克利、麻省理工GAN图像合成最新成果(附开源代码)!
  6. 读取xml节点的数据总结(.net 2.0)
  7. Java IO 系统(一)
  8. MFC中手工创建控件
  9. java计算机二级内容总结
  10. 用javacv提取视频中的音频数据
  11. 局域网组件拨号连接服务器上网,架设pppoe服务器拨号上网 防止ARP欺骗
  12. 银联支付更换正式环境后报错存在风险而关闭了订单
  13. Python的简单代码:两天肝出画函数图像(散点图)的程序(不用matplotlib)(含白菜也能看懂的超超超详细讲解和源代码哦)
  14. 高德地图看各省分界线_高德地图定位城市区域
  15. DOS攻击和DDOS攻击之间有什么区别?
  16. JSP实现word文档的上传,在线预览,下载
  17. if lte IE if gte IE 浏览器兼容
  18. Emmet 食用指北
  19. 关于卸载Nodejs,并且用Nvm管理工具重装nodejs的整合
  20. I.MX6ULL ARM驱动开发---设备树下的platfrom设备驱动

热门文章

  1. 简洁好用的Geek Unіnstaller
  2. 登录功能使用 JWT 技术
  3. 网页源代码保护(禁止右键、复制、另存为、查看源文件)
  4. 坚果pro2刷原生android,坚果Pro2普通版(U3 Pro)魔趣OS 安卓10 纯净完美 原生极简 纯净推荐...
  5. 北斗与GPS有哪些区别?
  6. 武汉大学计算机学院2010情景剧,武汉大学2010届毕业生生源httpwww.xsjy.whu.edu.cn.doc...
  7. Data Binding 详解(一)-从零开始
  8. C++MFC控件属性的解释
  9. PDF文件在线转换HTML的方法
  10. 统计学之算术平均数、调和平均数、几何平均数、位置平均数详解