
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值,本文给大家介绍C++中的memset用法,感兴趣的朋友跟随小编一起看看吧
memset简介
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值。
| 1 |
|
- s指向要填充的内存块。
- c是要被设置的值。
- n是要被设置该值的字符数。
- 返回类型是一个指向存储区s的指针。
需要说明的几个地方
一、不能任意赋值
memset函数是按照字节对内存块进行初始化,所以不能用它将int数组出初始化为0和-1之外的其他值(除非该值高字节和低字节相同)。
其实c的实际范围应该在0~255,因为memset函数只能取c的后八位给所输入范围的每个字节。也就是说无论c多大只有后八位二进制是有效的。
=================================================================================================
对于int a[4];
memset(a, -1, sizeof(a)) 与 memset(a, 511, sizeof(a)) 所赋值的结果一样都为-1:
因为 -1 的二进制码为(11111111 11111111 11111111 11111111);511 的二进制码为(00000000 00000000 00000001 11111111);
后八位均为(11111111),所以数组中的每个字节都被赋值为(11111111)。
注意int占四个字节,例如a[0]的四个字节都被赋值为(11111111),那么a[0](11111111 11111111 11111111 11111111),即a[0] = -1。
二、注意所要赋值的数组的元素类型
先来看两个例子:
例一:对char类型的数组a初始化,设置元素全为’1’
| 1 2 3 4 5 6 7 8 |
|

本文详细介绍了C++中的memset函数,包括其作用、使用限制和常见误区。内容涵盖memset如何按字节初始化内存,对于不同数据类型的数组赋值注意事项,以及在初始化数组和结构体时的应用。强调了memset在处理int数组时可能出现的非预期结果,并提供了正确使用memset的建议。
最低0.47元/天 解锁文章
6195

被折叠的 条评论
为什么被折叠?



