memset 初始化数组
memset是初始化一段内存区域的函数,其头文件是<string.h>,以前经常使用出现错误,整理一下。
C++ Reference对于memset的定义为:
void * memset ( void * ptr, int value, size_t num );
其中,对于memset的各个参数的定义如下:
ptr: Pointer to the block of memory to fill.
value: Value to be set. The value is passed as an int, but the function fills the block of memory using the unsigned char conversion of this value.、
num:Number of bytes to be set to the value.
在参数的说明中,提到value值是按照int类型进行的传递,但是在填充的时候是将value值转换为unsigned char进行填充。因此,在使用memset进行内存初始化的时候,value值应该传递的是一个字节的值。
对int类型的内存区域进行初始化,ptr的类型是int*,举例说明一下:
1. 将内存初始化为0
memset(ptr,,sizeof(ptr));
2. 将内存初始化为-1
memset(ptr,0xff,sizeof(ptr));
因为按照字节进行填充,那么value值为0xff,将会把内存的每个字节都填充为0xff,则int值的区域为全1,那么int值就是-1。
3. 将内存初始化为极大值
memset(ptr,0x3f,sizeof(ptr));
这段初始化代码初始出来的int值大小是1061109567
如果要将int内存区域统一初始化为1,那memset就无能为力了。
memset 初始化数组的更多相关文章
- memset初始化数组的问题
今天才搞清楚,memset用于初始化数组,仅能初始化为0值,而不能初始化一个特定的值,这怎么能模糊了呢??? 因此,如果对申请的一段存放数组的内存进行初始化,每个数组元素均初始化为特定的值,必须使用循 ...
- memset初始化数组的坑
memset函数常被我们用来初始化数组,然而有个坑可能会被我们踩到. 静态数组初始化 一般情形是这样的: #include <cstring> int main() { // 静态数组ar ...
- memset 初始化数组 & 实现原理
初始化数组可不必使用n重for循环. 原理 memset具有初始化数组的功能,能够初始化数组中的每一个值. 它是将数组中的每一个数的二进制的每一个字节初始化的. 比如初始化int类型的a数组:mems ...
- 批量初始化数组和memset函数
对于数组的初始化有一下三种方式: int a[]={1,2,3,4,5} //通过判断初始化值得个数来却仍数组长度 int b[5]={1,2,3} //数组长度为5,可是初始值却只有三个,因此,不 ...
- c++ 批量初始化数组 fill和fill_n函数的应用
转自c++ 如何批量初始化数组 fill和fill_n函数的应用 std::fill(a+,a+,0x3f3f3f3f);///从下标2到下标10 前闭后开 共8个 std::fill_n(a+,,0 ...
- c#清空数组&初始化数组&动态数组
清空数组>>>Array.Clear [去MSDN查看] ]; ; i < str.Length; i++) str[i] = i.ToString(); Array.Clea ...
- PHP5.2 $arr = [] 初始化数组出现问题
初始化数组 $arr=[] ,出现问题,使用 $arr = array() ,一切正常
- Java自学-数组 初始化数组
Java 如何初始化数组 步骤 1 : 分配空间与赋值分步进行 public class HelloWorld { public static void main(String[] args) { i ...
- 使用memset初始化int数组
memset()是一个来自于string库的函数,正规用法是初始化char类型的数组.因为char类型只占1个字节,memset按字节赋值后,会将char类型数组的所有元素变为你指定的值.但是4字节的 ...
随机推荐
- Context Switch Definition
A context switch (also sometimes referred to as a process switch or a task switch) is the switching ...
- org.springframework.beans.BeanUtils
org.springframework.beans.BeanUtils的一个demo.可以很优雅的实现将父类字段的值copy到子类中 下面例子的输出结果(子类使用父类的toString方法,有点意思吧 ...
- 【HDOJ】1247 Hat’s Words
字典树. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 50005 #d ...
- Unity GUI编程
脚本语言:C# 附上一张图说明Unity GUI编程中可用的控件:(可能有遗漏) 下面列出一些例子来说明: 1.Groups : 在固定Layout模式中起到组织可用项的功能,它让你在屏幕的一个区域中 ...
- Linux下常见权限操作相关命令
ls -alls -ld chmod 700 sys_config chmod 700 sys_objschmod 4711 objget su test_setuid -c "./objp ...
- kernel解读之 pick_next_rt_entity
1328 static struct sched_rt_entity *pick_next_rt_entity(struct rq *rq, 1329 struct rt_rq *rt_rq) 133 ...
- Pick-up sticks(判断两条线段是否相交)
Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 8351 Accepted: 3068 Description Stan has ...
- bzoj2588
一开始一看树上的操作,就无脑写了树链剖分+主席树 然后果断T了,因为树链剖分+主席树必然带来两个log的复杂度 而且树链剖分复杂度还比较大…… 后来发现其实没必要,在这道题,我们可以直接利用主席树维护 ...
- 字符串(马拉车算法,后缀数组,稀疏表):BZOJ 3676 [Apio2014]回文串
Description 考虑一个只包含小写拉丁字母的字符串s.我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度.请你求出s的所有回文子串中的最 大出现值. Input 输入只有一行 ...
- C#中object sender,EventHandler e有个毛作用
button1_Click(object sender,EventHandler e) { Button button=(Button)sender; button.Text="text p ...