1. memset函数 memset函数是按字节进行赋值的,经常用于赋值0或者-1, 但正规的用法应该是用于char数组的, 即只能赋值为0x00到0xFF, 例如memset(,0xff,sizeof())时,0xff转为二进制11111111,int为4字节所以最后为11111111111111111111111111111111为-1。(化为二进制补位,然后再赋值)。 能够赋值0, -1的原因是:0的二进制位000000000000000000000000000000000,-1的二进制就是11111111111111111111111111111111,所以memset可以直接初始化0, -1 2. 用memset函数初始无穷大 int类型最大数为0x7fffffff memset(num,0x7F,sizeof(num)); //它将num中的值全部赋为2139062143,这是用memset对int赋值所能达到的最大值 但图论需要一个无穷大加一个有穷的数依然是无穷大的数, 此时不能取0x7fffffff, 因为此时两数相加会得到一个很小的数 0x3f3f3f3f 是一个非常合适的数, 他满足无穷大加一个有穷的数依然是无穷大的数这个要求, 0x3f3f3f3f的十进制是1061109567,也就是10^9级别的也满足了对无穷大的需求 设置的时候只需要memset(num,0x3f,sizeof(num)) 3. 总结 1. 0x7fffffff :int的最大值, 0x7 后跟7个f,memset (num,0x7f,sizeof(num)); 2. 0x3f3f3f3f, 1061109567, 0x后跟4个3f, memset(num,0x3f,sizeof(num))