C語言memset函數(shù)使用方法詳解
C語言memset函數(shù)使用方法詳解
一。函數(shù)原形 void * memset(void*s, int ch,size_t n)
二。函數(shù)作用 將以s內(nèi)存地址為首的連續(xù)n個(gè)字節(jié)的內(nèi)容置成ch,一般用來對(duì)大量結(jié)構(gòu)體和數(shù)組進(jìn)行清零
三。常見錯(cuò)誤
1.搞反了 ch 和 n的位置
對(duì)char[20]清零,一定是 memset(a,0,20);
2.過度使用memset
3.其實(shí)這個(gè)錯(cuò)誤嚴(yán)格來講不能算用錯(cuò)memset,但是它經(jīng)常在使用memset的場(chǎng)合出現(xiàn)
int fun(strucy something * a) { ..... memset(a,0,sizeof(a)); ..... }
這里錯(cuò)誤的原因是VC函數(shù)傳參過程中的指針降級(jí),導(dǎo)致sizeof(a),返回的是一個(gè) something*指針類型大小的的字節(jié)數(shù),如果是32位,就是4字節(jié)。經(jīng)常使用這種形式
memset(a,0,n*sizeof(type));
4.想對(duì)數(shù)組初始化為1
int main() { int a[20]; memset(a,1,20); }
這種方法不能初始化為1。原因是memset函數(shù)是按照字節(jié)賦值的,int 是4個(gè)字節(jié)所以為0x01010101,就是十進(jìn)制的16843009。
如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
C語言掃雷詳細(xì)代碼分步實(shí)現(xiàn)流程
掃雷是電腦上很經(jīng)典的游戲,特意去網(wǎng)上玩了一會(huì),幾次調(diào)試之后,發(fā)現(xiàn)這個(gè)比三子棋要復(fù)雜一些,尤其是空白展開算法上和堵截玩家有的一拼,與實(shí)際游戲差別較大,不能使用光標(biāo),下面來詳解每一步分析2022-02-02C++中String增刪查改模擬實(shí)現(xiàn)方法舉例
這篇文章主要給大家介紹了關(guān)于C++中String增刪查改模擬實(shí)現(xiàn)方法的相關(guān)資料,String是C++中的重要類型,程序員在C++面試中經(jīng)常會(huì)遇到關(guān)于String的細(xì)節(jié)問題,甚至要求當(dāng)場(chǎng)實(shí)現(xiàn)這個(gè)類,需要的朋友可以參考下2023-11-11C++深入探索內(nèi)聯(lián)函數(shù)inline與auto關(guān)鍵字的使用
本篇文章主要包括內(nèi)聯(lián)函數(shù)和auto關(guān)鍵字。其中,內(nèi)斂函數(shù)包括概念,特性等;auto關(guān)鍵字的使用規(guī)則,使用場(chǎng)景等,接下來讓我們深入了解2022-05-05C++中二進(jìn)制數(shù)據(jù)序列化和反序列化詳解
這篇文章主要為大家詳細(xì)介紹了C++中二進(jìn)制數(shù)據(jù)序列化和反序列化的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下2023-11-11

C語言+shell實(shí)現(xiàn)linux網(wǎng)卡狀態(tài)檢測(cè)