今天在寫一道dfs題目,想到要給一個二維數組初始化合適的函數且學過的就memset了,這個函數很神奇memset函數是逐字節進行填充並且它是一個字符串函數,看到網上一個代碼沒看懂如下
#define MAX 100000 const int MAXN = 5; int len[MAXN][MAXN]; memset(len,MAX,sizeof(len));//失敗,並不能讓len數組所有的值是100000,而是-1600085856 memset(len,-1,sizeof(len))//成功,並且len所有的值都是-1; memset(len,-2,sizeof(len))//失敗
又繼續搜索發現memset函數是逐字節進行填充,所以a一般為char *型。對於其它類型的a,可以填充的值有兩個,0和-1。因為計算機中用二進制補碼表示數字,0和二進制補碼為全0,-1的二進制補碼為全1,
第一個和第三個失敗的原因就是如此。最后要注意該函數在頭文件<string.h>中