關於memset函數

相信很多人都知道這個函數,也都用過,但可能很多人跟我過去一樣,認爲它是賦初值函數,而不知它賦初值是八位八位進行的,知道了這句話那你之後的就都懂了。

首先它是在頭文件string.h中,這說明了什麼呢,他操作的是字符類型,而字符類型有幾位呢,那就是八位,所以它就是按八位來賦初值的。之所以我們平時可以用

int array[100];
memset(array,0,sizrof(array));
memset(array,-1,sizrof(array));

是因爲它剛好賦值完32位有符號int之後是不變的也就是

00000000 00000000 00000000 00000000      也就是0

11111111 11111111 11111111 11111111      也就是-1

而如果是

memset(array,1,sizrof(array));
那它的結果就不是1了,應該是

00000001 00000001 00000001 00000001      也就是16843009

所以說知道了原理,也就知道錯誤的原因,希望可以幫助到大家^_^;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章