关于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 ,这样就可以达到初始化的效果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端