今天写程序,要进行初始化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 ..
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));
memset(s,1,sizeof(s));
就是向字符串s的5个字节分别填入ASCII码为1的内容, s的真实内容如下:00000001000000010000000100000001。
而像我上面那样给浮点数组A赋值,会发现A的内容是是100字节ASCII码为0的内容。
浙公网安备 33010602011771号