memset用法详解(转载,删了些冗余的)
来源:互联网 发布:郑大网络管理中心 编辑:程序博客网 时间:2024/06/06 12:41
memest原型
memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。
常见的三种错误
第一: 搞反了c 和 n的位置.
一定要记住 如果要把一个char a[20]清零, 一定是 memset(a, 0, 20)
而不是 memset(a, 20, 0)
第二: 过度使用memset, 我想这些程序员可能有某种心理阴影, 他们惧怕未经初始化的内存, 所以他们会写出这样的代码:
这里的memset是多余的. 因为这块内存马上就被覆盖了, 清零没有意义.
问:为何要用memset置零?memset( &Address, 0, sizeof(Address));经常看到这样的用法,其实不用的话,分配数据的时候,剩余的空间也会置零的。
答:1.如果不清空,可能会在测试当中出现野值。 你做下面的试验看看结果()
另:
如下demo是可以的,能把数组中的元素值都设置成字符1,
而,如下程序想吧数组中的元素值设置成1,却是不可行的
问题是:
1,第一个程序为什么可以,而第二个不行,
2,不想要用for,或是while循环来初始化int a[5];能做到吗?(有没有一个像memset()这样的函数初始化)
答:
1.因为第一个程序的数组a是字符型的,字符型占据内存大小是1Byte,而memset函数也是以字节为单位进行赋值的,所以你输出没有问题。而第二个程序a是整型的,使用memset还是按字节赋值,这样赋值完以后,每个数组元素的值实际上是0x01010101即十进制的16843009。你看看你输出结果是否这样?
2.如果用memset(a,1,20);
就是对a指向的内存的20个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是1000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了。
- memset用法详解(转载,删了些冗余的)
- C++中memset()函数的用法详解
- memset用法详解
- memset用法详解
- memset用法详解
- memset用法详解
- memset用法详解
- memset用法详解
- memset用法详解
- memset用法详解
- memset用法详解
- memset用法详解
- memset用法详解
- memset 用法详解
- memset用法详解(转)
- memset用法详解
- memset用法详解
- memset用法详解[转]
- 软件的功能测试和适用性测试的标准
- 新加入
- C++ STL priority_queue
- HP大中华区总裁孙振耀退休感言
- 宏判断类是否定义
- memset用法详解(转载,删了些冗余的)
- 二次开发环境用户授权保存中断问题解决办法
- 程序员笑话集锦
- enum编程实例 随机访问
- 使用WinDBG观察启用PAE后的分页机制
- 使用apache Rewrite_mod模块完成URL重写
- 《网管员必读》系列书籍 全套电子版
- mysql_query()只有语句不能被MySQL正确执行的时候才返回False
- Oracle 数据库在archivelog模式下文件丢失的恢复