memset 为Int型数组初始化问题

原型: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是按字节一个一个的设置,比如把整型数a设置为1,int是32位的共四个字节,每个字节设置为1,则为00000001 00000001 00000001 00000001转为十进制数是1+1
2^8+12^16+12^24=16843009,而不是1。

-1为 11111111 11111111 11111111 11111111(two’s complement负数补码),转化后为-1