相信很多人都知道這個函數,也都用過,但可能很多人跟我過去一樣,認爲它是賦初值函數,而不知它賦初值是八位八位進行的,知道了這句話那你之後的就都懂了。
首先它是在頭文件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
所以說知道了原理,也就知道錯誤的原因,希望可以幫助到大家^_^;