memset(void *s,int ch,size_t n);

作用:将s中当前位置后面的n个字节用 ch 替换并返回 s

注意这里是“字节”而非单位长度,memset不会考虑各个类型的单位长度,只是处理字节。所以使用的时候应该用如下的格式:

memset(a,b,n*sizeof(int));//这里以Int为例。

-----------------------------------

同样是这个问题,我在一次想要给一个二维数组赋初值INT_MAX,写了这样的语句:

memset(mi,0x3f,sizeof(mi));

但是得到的结果却一直是-1,这是因为忽略了memset只是给字节赋值而非给单位赋值!INT_MAX是int中的最大值,但Int是占用4个字节的!用Int的最大值给字节赋值显然不合适。

常用的几个正确的memset初始化方案有:

memset(mp,0,sizeof mp):  使mp数组里的所有值变为0x00000000 ,而0x00000000 = 0,所以mp数组里的所有值就变为了0。
memset(mp,0x3f3f3f3f,sizeof mp):0x3f3f3f3f = 1061109567 为10^9。 而且使用这个数字直接用memset函数就行了,不用循环初始化数组,不然真的很烦。(不是Int的最大值,但也已经是一个比较大的数了,大多数情况下可以了)
memset(mp,-1,sizeof mp):会使mp中每个元素的值为-1的原因如下:
int类型的整数-1在32位的计算机中表示为 11111111    11111111   11111111   11111111
memset将void *memset(void *s, int ch, size_t n)中的ch强制转换为unsigned char,
也就是变成11111111
最终执行完memset函数后,temp对应的内存每一字节都被赋值为11111111
也就是说temp的任意一个元素都为11111111    11111111   11111111   11111111
恰好为-1。

---------------------
作者:Mr_Treeeee
来源:CSDN
原文:https://blog.csdn.net/Mr_Treeeee/article/details/70540307
版权声明:本文为博主原创文章,转载请附上博文链接!

同样的错误方案有:

memset(mp,1,sizeof mp):  变量被初始化成了0x01010101 = 16843009 , 而非1。 所以并不能用。

关于memset的几个易错点的更多相关文章

  1. JavaScript易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  2. JavaScript 易错知识点整理

    本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES ...

  3. Java五道输出易错题解析(避免小错误)

    收集了几个易错的或好玩的Java输出题,分享给大家,以后在编程学习中稍微注意下就OK了. 1. 看不见的空格? 下面的输出会正常吗? package basic; public class Integ ...

  4. 细节!重点!易错点!--面试java基础篇(二)

    今天来给大家分享一下java的重点易错点第二部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.字符串创建与存储机制:当创建一个字符串时,首先会在常量池中查找是否已经有相同的字符串被定义,其判断 ...

  5. 细节!重点!易错点!--面试java基础篇(一)

    今天来给大家分享一下java的重点易错点部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的. 2.任何静态代码块都会在ma ...

  6. [SQLXML]FOR XML语法导出XML的易错之处

    原文:[SQLXML]FOR XML语法导出XML的易错之处 [SQLXML]FOR XML语法导出XML的易错之处 Version Date Creator Description 1.0.0.1 ...

  7. JavaScript易错点转载

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  8. PHP数据访问易错点(20161030)

    易错点: 1.造对象的时候括号里面的参数 写错了 $db = new MySQLi("localhost","root","789",&qu ...

  9. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)

    本文记录一些关于Verilog HDL的一些技巧.易错.易忘点等(主要是语法上),一方面是方便自己忘记语法时进行查阅翻看,另一方面是分享给大家,如果有错的话,希望大家能够评论指出. 关键词: ·技巧篇 ...

随机推荐

  1. Selenium2+python自动化-使用JS脚本处理网页滚动条

    内容来自:https://www.cnblogs.com/yoyoketang/p/6128655.html JS相关知识:http://www.w3school.com.cn/js/index.as ...

  2. PHP AJAX 返回JSON 数据

    例子:利用AJAX返回JSON数据,间接访问数据库,查出Nation 表,并用下拉列表显示 造一个外部下拉列表框 </select> JQurey代码 $(document).ready( ...

  3. HTML中meta=“viewport”的介绍

    viewport就是浏览器上用来显示网页的那部分区域 layout viewport:整个网页所占据的区域(包括可视也包括不可视的区域)  默认的 visual viewport:网页在浏览器上的可视 ...

  4. 手机APP流量的发送与获取功能的实现

    package com.loaderman.trafficdemo; import android.content.Context; import android.content.Intent; im ...

  5. Ironic 裸金属管理服务的底层技术支撑

    目录 文章目录 目录 底层技术支撑 DHCP NBP TFTP IPMI PXE & iPXE Cloud Init Linux 操作系统启动引导过程 底层技术支撑 PXE:预启动执行环境,支 ...

  6. js 中实现 汉字按拼音排序

    let arr = ["贵州省", "江苏省", "江西省", "浙江省", "四川省", &quo ...

  7. Python 正则表达式【二】

    关于前向,后向,匹配,非匹配 Matches if ... matches next, but doesn’t consume any of the string. This is called a ...

  8. 5、kubernetes资源清单定义入门

    使用配置清单创建资源 定义pod时使用yaml格式 master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE client / Error 1 ...

  9. ModelAndView及页面转发

    1.ModelAndView springMVC中返回值如果是ModelAndView,则其既包含模型数据信息,也包含视图信息. 在处理方法中可以使用ModelAndView对象的方法添加模型数据:a ...

  10. Mybatis操作数据时出现:java.sql.SQLSyntaxErrorException: Unknown column 'XXX' in 'field list'

    这个错误比较重要,而且很常见,故单独进行说明: Mybatis出现:Unknown column 'xxx' in 'field list' 先来看一下程序的内部: dao.addUser(" ...