memset函式

Tinukso發表於2020-11-26

每種型別的變數都有各自的初始化方法,memset() 函式可以說是初始化記憶體的“萬能函式”,通常為新申請的記憶體進行初始化工作。它是直接操作記憶體空間,mem即“記憶體”(memory)的意思。該函式的原型為

# include <string.h>
void *memset(void *s, int c, unsigned long n);

函式的功能是:將指標變數 s 所指向的前 n 位元組的記憶體單元用一個“整數” c 替換,注意 c 是 int 型。s 是 void* 型的指標變數,所以它可以為任何型別的資料進行初始化。

memset() 的作用是在一段記憶體塊中填充某個給定的值。因為它只能填充一個值,所以該函式的初始化為原始初始化,無法將變數初始化為程式中需要的資料。用memset初始化完後,後面程式中再向該記憶體空間中存放需要的資料。

memset 一般使用“0”初始化記憶體單元,而且通常是給陣列或結構體進行初始化。一般的變數如 char、int、float、double 等型別的變數直接初始化即可,沒有必要用 memset。如果用 memset 的話反而顯得麻煩。

當然,陣列也可以直接進行初始化,但 memset 是對較大的陣列或結構體進行清零初始化的最快方法,因為它是直接對記憶體進行操作的。

相關文章