• 关于memset


    memset是按照字节赋值,一个字符是一个字节,因此对字符数组可以初始化为任何值,而对int数组就不是这样了

    例如:常用memset(a,-1,sizeof(a))

    原理就是:-1在计算机储存是11111111,int是四个字节,每个字节(一个字节八位)全部赋值为-1,因此32位2进制结合起来就是-1

    11111111  11111111  11111111 11111111

    memset(a,1,sizeof(a))却不行,每个字节赋值为1

    00000001  00000001  00000001 00000001 ,这样32位2进制换算为10进制并不是1

    memset(a,0,sizeof(a))同理,每个字节赋值为0,32为2进制还是0

    00000000  00000000  00000000 00000000

    memset还有一个用法,有时候通常需要用到一个无穷大值,例如  0x7fffffff  值为  2147483647  或者  0x3f3f3f3f 值为 1061109567 。

    我们通常不会选择前者,因为前者如果加一个数就会存在溢出的问题,通常选择后者 大于10^9并且远远小于 32-bit int 的范围,不会存在溢出的风险,并且我们可以直接用memset来初始化

     memset(a, 0x3f, sizeof(a)) ,因为  0x3f3f3f3f  的每个字节刚好是 0x3f ,这样就可以达到初始化的效果。

  • 相关阅读:
    TCP四次握手断开连接(十一)
    Go-函数
    Go-数据类型以及变量,常量
    GO语言介绍以及开发环境配置
    Socket与WebSocket以及http与https重新总结
    希尔排序
    第19课
    第18课
    外传篇3 动态内存申请的结果
    外传篇2 函数的异常规格说明
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/13377146.html
Copyright © 2020-2023  润新知