這個問題一直困擾了我好久,我向來都用for來控制置-1;由於我不會用memset(つ﹏⊂)我是個蒟蒻。今天終於學會了一點皮毛,趕忙記錄一下數組
方法一:函數
簡單粗暴,快捷有效。for循環一點點的置1,這個方法一直有效,沒有限制條件,除非你不知道大小。學習
方法二:spa
創建數組的時候同時完成初始化,若是是靜態建立數組那麼只能將數組初始化爲0;內存
1 int arr[10] = {0};string
若是是動態建立數組的化就能夠用stdlib裏的calloc進行內存的動態分配 ,開闢空間後默認置0,for循環
不過方法二只能置0。ast
方法三:循環
用string裏的memset函數來處理,但因爲其是對每個字節賦值的因此擁有四個字節的int,只能past,可是由於按字節賦值對0和-1沒有影響因此能夠用來置0或-1;方法
爲何0和-1能夠呢,由於-1的BCD碼爲32個1,0呢則爲32個0,因此截取成雖然是按字節存寫的可是int讀取時都是相同的值因此無所謂了。
1就別想,它的BCD碼是31個0一個1……這個偏差,能飛到天上去。
1 memset(arr, (-1), sizeof(arr));
大概就是醬紫,(由於只會這些,只能寫道這裏了)
學習不易,諸君共勉!