码迷,mamicode.com
首页 > 编程语言 > 详细

为什么memset不能将数组元素初始化为1?

时间:2014-12-03 19:02:38      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   color   使用   sp   for   文件   

原型:extern void *memset(void *buffer, int c, int count);

功能:把buffer所指内存区域的前count个字节设置成字符c。

包含头文件:<string.h>

注意这个函数是字符串函数,所以一定要包含字符串头文件。

使用方法:

int a[50];

memset(a,0,sizeof(a));

这样呢,就将数组a内所有的值都赋成0了,sizeof是一个一元操作符,得到数组a的字节大小。

另外需要注意的是,memset函数是逐字节进行填充,所以a一般为char *型。对于其它类型的a,可以填充的值有两个,0和-1。因为计算机中用二进制补码表示数字,0和二进制补码为全0,-1的二进制补码为全1。

 

memset是一个字节一个字节的设置,把一个int的每个字节都设置为1,也就是0x01010101,十进制就是16843009

 

要初始化1怎么办?

要设int数组为1,就用for循环一个个设置就行了。或者枚举也可以

为什么memset不能将数组元素初始化为1?

标签:style   blog   http   ar   color   使用   sp   for   文件   

原文地址:http://www.cnblogs.com/blogofwu/p/4140563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!