C++中memset的用法注意事项
来源:互联网 发布:php网络编程技术详解 编辑:程序博客网 时间:2024/05/14 19:48
头文件:cstring 或 memory
话说刚开始使用memset的时候一直以为memset是对每一个int赋值的,心里想有了memset还要for循环对数组进行初始化干嘛。但其实memset这个函数的作用是将数字以单个字节逐个拷贝的方式放到指定的内存中去。
比如
memset(dp,0,sizeof(dp));int类型的变量一般占用4个字节,对每一个字节赋值0的话就变成了“00000000 00000000 000000000 00000000” (即10进制数中的0)
赋值为-1的话,放的是 “11111111 11111111 11111111 11111111 ”(十进制的-1)
这样你可能以为如果你赋值1的话会让整个dp数组里的每一个int变成1,其实不然。
memset(dp,1,sizeof(dp));以上代码执行后,dp数组的内容为 00000001 00000001 00000001 00000001 转化为十进制后不为1
我们在很多程序中都会看到memset(a,127,sizeof(a));这样的代码,127是什么特别的数字呢?通过基础的进制转换可以得知127的二进制表示是01111111,那么在dp数组里放的内容就是“01111111 01111111 01111111 01111111”,(10进制的2139062143),这样就实现了将数组里的全部元素初始化为一个很大的数的目的了,在最短路径问题以及其他很多算法中都是需要用到的。值得注意的是,int类型的范围为2^31-1,大约是2147483647的样子(如果我没有记错的话),所以初始化int类型的数组也可以使用127这个数值。
如果是128呢?因为128的二进制是10000000,那么放的内容就是10000000 10000000 10000000 10000000,经过计算可得这个数是-2139062144。这样就可以将数组初始化为一个很小的数了。
原地址(我的个人博客):http://venc.in/cpp-memset/
0 0
- C++中memset的用法注意事项
- C++中memset函数的用法注意事项
- c/c++中memset()函数的用法
- c语言中memset()的用法
- C语言中memset的用法 atoi strcmp
- c语言中函数memset()用法
- memset函数用法及注意事项
- memset函数用法及注意事项
- memset函数用法及注意事项
- 关于函数memset的若干用法和注意事项
- memset 函数的注意事项
- 关于memset的注意事项
- c中的memset函数的用法?
- c语言中的memset的用法
- C学习笔记--memset注意事项
- C学习笔记--memset注意事项
- c/c++ memset用法
- linux中memset的正确用法
- LeetCode Valid Sudoku
- 全志Android设备增加Usb host ADK 功能
- InheritableThreadLocal变量的可见性
- 我的人生根蒂
- 抽象数据类型标准库
- C++中memset的用法注意事项
- iOS 中方法动作的使用方法
- 错误:Unsupported major.minor version 51.0(jdk版本错误)
- php连接mysql时报错:SQLSTATE[HY000] [2002] No such file or directory
- autoit3修改hosts文件的方式
- wcf并发和吞吐量
- CSS命名总结
- 企业应用Javaweb Domain模型层次的划分
- 厦门PVH验厂咨询石嘴山BDA验厂文件