這個問題一直困擾了我很久,我向來都用for來控制置-1;因為我不會用memset(つ﹏⊂)我是個蒟蒻。今天終於學會了一點皮毛,趕緊記錄一下
方法一:
簡單粗暴,快捷有效。for循環一點點的置1,這個方法一直有效,沒有限制條件,除非你不知道大小。
方法二:
建立數組的時候同時完成初始化,如果是靜態創建數組那么只能將數組初始化為0;
1 int arr[10] = {0};
如果是動態創建數組的化就可以用stdlib里的calloc進行內存的動態分配 ,開辟空間后默認置0,
不過方法二只能置0。
方法三:
用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));
大概就是醬紫,(因為只會這些,只能寫道這里了)
學習不易,諸君共勉!