數(shù)組初始化的時候常用for()循環(huán),不過如果考慮效率的話,最好用memset(),下面簡單介紹以下memset()。
函數(shù)原型:
void *memset(void *s, int ch, size_t n)
函數(shù)解釋:將s中前n個字節(jié)替換為ch并返回s;
memset:它包含在<memory.h>或者<string.h>中。作用是在一段內(nèi)存塊中填充某個給定的值,它的操作對象為單個字節(jié),是對較大的結(jié)構(gòu)體或數(shù)組進(jìn)行清零操作的一種最快方法。
提到memset()就不得不提到sizeof(),因?yàn)閟izeof()使用不好可能給memset()帶來很隱蔽的錯誤:
int some_func(struct something *a){
…
…
memset(a, 0, sizeof(a));
…
}
上面這段代碼是不能達(dá)到對a[]清零的目的的,因?yàn)?strong>some_func()函數(shù)的參數(shù)已退化為指針,而不是數(shù)組對象,因此這里的sizeof(a)在32位機(jī)器上返回的應(yīng)該是4,而不是a[]數(shù)組的長度(所占字節(jié)數(shù))。
sizeof是C/C++中的一個操作符(operator),而不是函數(shù),其作用就是返回一個具有明確類型的對象或者類型所占的內(nèi)存字節(jié)數(shù)。
它有以下特點(diǎn):
1.它在程序編譯時被執(zhí)行
2.它的操作對象可以是某個對象,或者某種類型
3.當(dāng)適用于一個變量時, sizeof 返回實(shí)際的大小,當(dāng)適用于靜態(tài)的空間數(shù)組, sizeof 返回全部數(shù)組的尺寸。
看完百科上關(guān)于sizeof()的介紹,心中頓時產(chǎn)生了一堆問號,真是學(xué)的越深入,不懂得越多啊╮(╯﹏╰)╭
以上內(nèi)容均來自百度百科,感謝默默編輯詞條的大神們。
詳情參閱:
http://baike.baidu.com/view/982208.htmhttp://baike.baidu.com/view/1078660.htm
posted on 2012-08-07 23:38
小鼠標(biāo) 閱讀(3202)
評論(2) 編輯 收藏 引用 所屬分類:
C語言