C語言數組的所有元素初始化成相同的值


  這個問題一直困擾了我很久,我向來都用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)); 

 

  大概就是醬紫,(因為只會這些,只能寫道這里了)

 

學習不易,諸君共勉!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM