功能:将一块内存区域按字节初始化为指定的ASCII值
语句:memset(void *s, int ch, unsigned n);
用法:
1.初始化字符数组
char buffer[] = "Hello world\n";
memset(buffer, '*', strlen(buffer) );
2.初始化整形数组
int array[5] = {1,4,3,5,2};
memset(array,0,5*sizeof(int));
注意:如果这么写
memset(array,1,5*sizeof(int));
输出的结果就是:
因为memset是以字节为单位就是对array指向的内存的5个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是 00000001,占一个字节。一个INT元素是4字节,合一起就是00000001000000010000000100000001,就等于16843009,就完 成了对一个INT元素的赋值了。
所以用memset对非字符型数组赋初值是不可取的!
3.初始化结构体
Some x;
memset( &x, 0, sizeof(Some) );
若是结构数组
Some x[10]