您好,登錄后才能下訂單哦!
C語言memset函數使用方法詳解
一。函數原形 void * memset(void*s, int ch,size_t n)
二。函數作用 將以s內存地址為首的連續n個字節的內容置成ch,一般用來對大量結構體和數組進行清零
三。常見錯誤
1.搞反了 ch 和 n的位置
對char[20]清零,一定是 memset(a,0,20);
2.過度使用memset
3.其實這個錯誤嚴格來講不能算用錯memset,但是它經常在使用memset的場合出現
int fun(strucy something * a) { ..... memset(a,0,sizeof(a)); ..... }
這里錯誤的原因是VC函數傳參過程中的指針降級,導致sizeof(a),返回的是一個 something*指針類型大小的的字節數,如果是32位,就是4字節。經常使用這種形式
memset(a,0,n*sizeof(type));
4.想對數組初始化為1
int main() { int a[20]; memset(a,1,20); }
這種方法不能初始化為1。原因是memset函數是按照字節賦值的,int 是4個字節所以為0x01010101,就是十進制的16843009。
如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。