C語言memset函數(shù)使用方法詳解
C語言memset函數(shù)使用方法詳解
一。函數(shù)原形 void * memset(void*s, int ch,size_t n)
二。函數(shù)作用 將以s內(nèi)存地址為首的連續(xù)n個字節(jié)的內(nèi)容置成ch,一般用來對大量結(jié)構體和數(shù)組進行清零
三。常見錯誤
1.搞反了 ch 和 n的位置
對char[20]清零,一定是 memset(a,0,20);
2.過度使用memset
3.其實這個錯誤嚴格來講不能算用錯memset,但是它經(jīng)常在使用memset的場合出現(xiàn)
int fun(strucy something * a)
{
.....
memset(a,0,sizeof(a));
.....
}
這里錯誤的原因是VC函數(shù)傳參過程中的指針降級,導致sizeof(a),返回的是一個 something*指針類型大小的的字節(jié)數(shù),如果是32位,就是4字節(jié)。經(jīng)常使用這種形式
memset(a,0,n*sizeof(type));
4.想對數(shù)組初始化為1
int main()
{
int a[20];
memset(a,1,20);
}
這種方法不能初始化為1。原因是memset函數(shù)是按照字節(jié)賦值的,int 是4個字節(jié)所以為0x01010101,就是十進制的16843009。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
C語言自定義類型超詳細梳理之結(jié)構體 枚舉 聯(lián)合體
今天我們來學習一下自定義類型,自定義類型包括結(jié)構體、枚舉、聯(lián)合體,小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考2022-03-03
Qt利用QNetwork實現(xiàn)上傳數(shù)據(jù)的示例代碼
這篇文章主要為大家詳細介紹了Qt如何利用QNetwork實現(xiàn)上傳數(shù)據(jù)的 功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2023-02-02
C語言詳解strcmp函數(shù)的分析及實現(xiàn)
strcmp函數(shù)語法為“int strcmp(char *str1,char *str2)”,其作用是比較字符串str1和str2是否相同,如果相同則返回0,如果不同,前者大于后者則返回1,否則返回-12022-05-05
C語言實現(xiàn)各種排序算法實例代碼(選擇,冒泡,插入,歸并,希爾,快排,堆排序,計數(shù))
排序算法是算法之中相對基礎的,也是各門語言的必學的算法,這篇文章主要介紹了C語言實現(xiàn)各種排序算法(選擇,冒泡,插入,歸并,希爾,快排,堆排序,計數(shù))的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2021-10-10

