用memset进行赋值操作

int a[3];
char b[3];
memset(a,0,sizeof(a));
0 0 0
memset(a,1,sizeof(a));
16843009 16843009 16843009
memset(a,-1,sizeof(a));
-1 -1 -1
memset(b,'a',sizeof(b));
a a a

参考表

sizeof(char)=1;
sizeof(int)=4;
sizeof(float)=4;
sizeof(long)=4;
sizeof(long long)=8;
sizeof(double)=8;

下面对这个现象进行解释

memset是按照字节进行赋值的
它是对要进行赋值的变量的后八位二进制进行赋值
因为2^8等于256,已经完全适用于字符的ASCII了
但是呢,对于整数来说

对于1来说

1的二进制是00000000 00000000 00000000 00000001
去后面的8位00000001
而int型占4个字节,当初话的时候是进行每个字节变成00000001
就会变成0x01010101
00000001 00000001 00000001 00000001
十进制是16843009

再来看0

二进制是00000000 00000000 00000000 00000000,
取后8位00000000,初始化后00000000 00000000 00000000 00000000
结果是0

对于-1

负数在计算机中以补码存储,二进制是11111111 11111111 11111111 11111111,
取后8位11111111,则是11111111 11111111 11111111 11111111
结果也是-1

对于字符来说

比如a
a的ASCII码是97
二进制形式01100001,取后八位还是01100001
而且char是一个字节的,那么进行初始化还是01100001
为a

总结

对于memset可以对0和-1进行初始化纯属是巧合问题,memset的头文件是cstring,所以该函数其实是属于对字符进行初始化用的

转载于:https://www.cnblogs.com/Emcikem/p/11354179.html

memset()函数的赋值问题相关推荐

  1. memset函数的赋值

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

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

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

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

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

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

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

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

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

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

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

  7. c++ memset 语言_C++中memset函数用法详解

    本文实例讲述了C++中memset函数用法.分享给大家供大家参考,具体如下: 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常 ...

  8. 【note】fill函数和memset函数的区别和使用

    memset函数 按照字节填充某字符 在头文件<cstring>里面 fill函数 按照单元赋值,将一个区间的元素都赋同一个值 在头文件<algorithm>里面 注意: fi ...

  9. memset()函数用法

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

最新文章

  1. 利用RNN训练Seq2Seq已经成为过去,CNN才是未来?
  2. GO程序调用C及C++库的实现方式
  3. 记一笔冒泡排序和对它的优化
  4. PostgreSQL在何处处理 sql查询之六十六
  5. Precision和Recall
  6. python怎么更新数据库_在Python的Django框架中更新数据库数据的方法
  7. .NET与鲲鹏共展翅,昇腾九万里(二)
  8. C++:51---继承中的构造函数、析构函数、拷贝控制一系列规则
  9. mysql如何逻辑删除_mysql逻辑删除如何恢复
  10. 蚂蚁金服亿级并发下的移动端到端网络接入架构解析
  11. 专题导读:高性能计算虚拟数据空间
  12. vue标签旋转_vue.js编写移动端页面,检测旋转屏幕,横竖屏。
  13. mysql存储过程自定义结构体_(转)MySQL存储过程/存储过程与自定义函数的区别...
  14. 3 万字 51 张图教你 CPU、内存、操作系统硬核知识!
  15. Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an insecure...........
  16. 【NumPy基础】100道numpy练习——初学与入门篇
  17. Html meta 标签定义页面元信息 详解
  18. 洞见科技创始人姚明:隐私计算让数据穿上“防护服”的同时,还能充分释放数据价值...
  19. 计算机打音乐醉赤壁,抖音确认过眼神我遇上对的人是什么歌,醉赤壁歌曲介绍...
  20. 创新抗生素获FDA优先审评资格 治疗社区获得性肺炎

热门文章

  1. .net 获取字符串中的第一个逗号的位置_SQLZOO中做错过的题
  2. 快手抢占“短视频第一股”,宿华都有哪些底牌?
  3. IDEA查找接口实现类及快速实现接口的方法及常用快捷键
  4. canvas3:绘制感叹号
  5. wps 模拟分析 规划求解_FFU气流仿真模拟,到底有多简单?
  6. f450四轴使用技巧
  7. python使用post方式提交数据
  8. python简单连接数据库
  9. 字符和编码之间的转换(Python)
  10. 【Heritrix基础教程之3】Heritrix的基本架构