摘要
memset()一般是对字符型数组赋初值,如果非要对整型数组赋初值,只能赋值0.
原因是memset()是设置每一个“字节”的值。问题
用memset将二维整型数组全部设置为最大整型时遇到的问题及解决办法
#define MAX 100000const int MAXN = 5; int len[MAXN][MAXN]; memset(len,MAX,sizeof(len));//失败,并不能让len数组所有的值是100000,而是-1600085856memset(len,-1,sizeof(len))//成功,并且len所有的值都是-1;memset(len,-2,sizeof(len))//失败
解释
sizeof(len) = 100sizeof(len) != 25memset是按字节赋值的。memset是内存操作,作用是设置每一个“字节”的值。第一个参数是内存地址,第2个参数是设置的值(0x00 - 0xff),第3个参数是字节数。
除了将整型数组设置为0,否则用memset对非字符型数组赋初值是不可取的!
使用memset将二维数组全部设置为一个值
char array[][];
memset(array,'A',sizeof(array));