需要的头文件 <memory.h> or <string.h>
函数原型 void *memset(void *s, int ch, unsigned n);
程序示例:
1.
unsigned char (*p)[40]=new unsigned char [100][40];
memset(p,1,100*40);
2.
float (*p)[40]=new float[100][40];
memset(p,1,100*40);
3.
float (*p)[40]=new float[100][40];
memset(p,0,100*40);
程序1可以达到想要的目标,但是2和3都达不到想要的目标。这是为什么呢?
因为memset是以字节为单位进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个float元素是4字节,合一起就是00000001000000010000000100000001,转换成十进制明显不是我们想要的结果。而3是没有把所有的内存全部清空。
所以用memset对非字符型数组赋初值是不可取的!清空内存却可以做到,正确的做法如4:
4。
float (*p)[40]=new float[100][40];
memset(p,0,100*40*sizeof(float));