memset函式的正確使用(C C )

2021-10-01 05:31:06 字數 998 閱讀 8503

memset

用法注意

單位元組memset函式可以將乙個陣列重置為某個值

第乙個引數是void*,可以寫需要重置的陣列的陣列名

第二個引數是乙個值,這個值就是用來重置陣列的

第三個引數表示需要重置陣列中多少個元素(從第乙個元素開始)

比如

char str[16]

;memset

(str,

'a',

sizeof

(str)

);

可以使每個str裡的元素值都為』a』

int d[16]

;memset

(d,3

,sizeof

(d))

;

這時候我們的d陣列並沒有被重置為3,而是被重置成了50529027,因為memset不會檢查你的陣列型別,它只會以位元組為單位去重置,這裡它把3看成了單位元組(而不是int的4位元組或者2位元組),所以d中的每個元素(假設4位元組)被4個單位元組拼接而成,3=0000 0011,所以重置後為0000 0011 0000 0011 0000 0011 0000 0011

這個值正好為50529027

int d[16]

;memset

(d,129

,sizeof

(d))

;

這裡129溢位,實際的二進位制形式為:1000 0001,

拼接成4位元組後,為1000 0001 1000 0001 1000 0001 1000 0001,這個值是-2122219135

int d[16]

;memset

(d,-1,

sizeof

(d))

;

正確使用memset函式

本文歸納了下使用memset幾個需要注意的地方,雖然內容很簡單,但也希望對大家有所幫助。1.memset是以位元組為單位,初始化記憶體塊。當初始化乙個位元組單位的陣列時,可以用memset把每個陣列單元初始化成任何你想要的值,比如,cpp view plain copy print char dat...

正確使用memset

本文歸納了下使用memset幾個需要注意的地方,雖然內容很簡單,但也希望對大家有所幫助。1.memset是以位元組為單位,初始化記憶體塊。當初始化乙個位元組單位的陣列時,可以用memset把每個陣列單元初始化成任何你想要的值,比如,cpp view plain copy char data 10 m...

正確使用memset

今天做了一道素數打表的題我在使用乙個陣列記錄是否為素數的時候使用了memset,將陣列裡面的數都清為1,代表是素數,不是素數,就改成0,我在判斷這乙個數是否為素數是依據也是是0還是1,結果一直存在問題,經過我一步步的除錯竟然發現了乙個之前從未在意過的bug,memset只能將int型陣列清理成0或 ...