整型数组无法整体赋值的原因:
对于一些特定的问题,整型数组可能需要整体赋一个初值,但是缺乏直接赋值的函数,因为整型数组没有终结的标志,计算机系统不会自动的判定它的大小,无法快速赋值。
整型数组赋初值的方法:
1./<string.h> 中有memset函数,但是memset函数是对一个字节进行赋值,只在一定情况下可以满足。
eg.
int aa[maxn]; //memset函数把它当成字符型数组看待。赋值后先转化成字符型再转化为整型;
memset(aa,0,sizeof(aa)); //于是aa数组变成0;(字符的1个字节8个位都是0)。
memset(aa,0xff,sizeof(aa)); //对aa数组的每个值的一个字节进行赋值(0x代表16进制).
此时aa数组都变成-1(计算机补码的规则,字符的一个字节8个位都是1,取反加1。)
如果清楚类型之间的转化,用这个方便多了(注意控制赋值的大小)。
生活中用memset将整型数组赋值为0还是非常常用的。
2.声明时赋值。
eg.
int aa[maxn]={0}; //如此,数组值都变成了0;
如果 int aa[maxn]={1,2}; //如此,数组前两个变成1,2,后面的都是0;
3.还是for循环来的实在,灵活性大。为你打call !!!
eg.
for(int i=0;i<n;i++){
aa[i]=xxx;
}