c/c++中對於memset的個人理解


今天在寫一道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>中

 


免責聲明!

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



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