今天写程序,要进行初始化float型数组的操作,float A[n][n],以前都是使用两层循环实现数组的初始化,<p>前几天看到有人用

memcpy(A,B,sizeof(float)*N*N)进行数组的拷贝,自己今天心血来潮,使用一下memset进行数组float型数组的初始化。

   我就写出了如下的代码:

 

1 .....
2 int N=5;
3 float A[N][N];
4 memset(A,0,sizeof(A));
5 ..

 

 

 

   然而,当打印结果时,发现并没有出现预料的结果,浮点数组A并没有被初始化0.0,通过网上调查,原来自己没有搞清楚memset的用法,下面是memset函数的原型:

void *memset(void *s, int ch, unsigned n);

 

    其真实含义是,对s为首地址的内存,使用长度为n个字节的ASCII码为ch的字符进行初始化。如下面的代码:

char s[4];
memset(s,
1,sizeof(s)); 

 

  就是向字符串s的5个字节分别填入ASCII码为1的内容, s的真实内容如下:00000001000000010000000100000001。

    而像我上面那样给浮点数组A赋值,会发现A的内容是是100字节ASCII码为0的内容。