memset函式用法總結(C C 初始化函式

2021-10-07 04:46:20 字數 957 閱讀 8214

使用時需要包含標頭檔案:

函式原型:void *memset(void *s,int ch,size_t n);

函式解釋:將s中當前位置後面的n個位元組 (typedef unsigned int size_t )用 ch 替換並返回 s

值得注意的是:

因為memset函式是按位元組來對記憶體塊進行初始化,所以函式原型中的ch的實際範圍是在0~255。因為該函式只能取ch的後八位賦值給你所輸入的範圍的每個位元組,比如int a[5]賦值memset(a,-1,sizeof(int )*5)與memset(a,511,sizeof(int )*5) 所賦值的結果是一樣的都為-1;因為-1的二進位製碼為(11111111 11111111 11111111 11111111)而511的二進位製碼為(00000000 00000000 00000001 11111111)後八位都為(11111111),所以陣列中每個位元組,如a[0]含四個位元組都被賦值為(11111111),其結果為a[0](11111111 11111111 11111111 11111111),即a[0]=-1。

因此無論ch多大只有後八位二進位制有效,而後八位二進位制的範圍在(0~255)中改。而對字元陣列操作時則取後八位賦值給字元陣列,其八位值作為ascii碼。

所以當它想對int型別陣列的元素進行初始化時,只能將其中的元素初始化為0或-1

或者 某些4個位元組都相同的數(如16843009等... 因為16843009的二進位制形式為:0000 0001 0000 0001 0000 0001 0000 0001,也就是因為該數 4個位元組都相同 )。

下面用**來說明:

#include #include using namespace std;

int main()

memset 函式用法

memset 原型 extern void memset void buffer,int c,int count 用法 include 功能 把buffer所指記憶體區域的前count個位元組設定成字元c。說明 返回指向buffer的指標。用來對一段記憶體空間全部設定為某個字元。舉例 char a ...

memset函式用法

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

memset函式用法

將s所指向的某一塊記憶體中的每個位元組的內容全部設定為ch指定的ascii值,塊的大小由第三個引數指定,這個函式通常為新申請的記憶體做初始化工作,其返回值為指向s的指標。在c中 or 在c 中 void memset void s,int ch,size t n 函式解釋 將s中前n個 位元組替換為...