關於memset函式

2021-06-28 00:48:04 字數 637 閱讀 2825

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

首先它是在標頭檔案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

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

關於memset函式

希望通過庫函式memset 來對乙個陣列進行初始化,需要了解一下該函式的工作原理。庫函式memset 是針對位元組操作的,其中第二個引數值被賦給第乙個引數指向的記憶體位址開始的每乙個位元組,因此,這種初始化其實存在侷限性,也導致其主要用於清除陣列內容等。比如 假設int a 10 i 0,1,2,m...

關於memset函式

void memset void s,int ch,size t n 函式解釋 將s中當前位置後面的n個位元組 typedef unsigned int size t 用ch替換並返回s。memset 作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快方法。mem...

關於菜鳥學習memset 函式

畢業設計要用到乙個基本的單鏈表,今天寫了乙個單鏈表的函式,以前也是寫過很多遍了,憑著感覺沒怎麼想,就寫了點,可是蛋疼的錯誤要我想了好久啊 部分 如下 include link.h link cre link link insert link link head,link new node while...