memest 用法小結

2021-10-08 12:33:07 字數 1609 閱讀 8293

作用:

在一段記憶體塊中填充某個給定的值,它是對較大的結構體結構體或陣列進行清零操作的一種最快方法。

語法:

#include void *memset( void *buffer, int ch, size_t count );
功能:

函式拷貝ch到

buffer

從頭開始的

count

個字元裡, 並返回

buffer

指標。 memset() 可以應用在將一段記憶體初始化為某個值。例如:

memset( the_array, '\0', sizeof(the_array) );
這是將乙個陣列的所以分量設定成零的很便捷的方法。

memset函式按位元組對記憶體塊進行初始化,所以不能用它將int陣列初始化為0和-1之外的其他值(除非該值高位元組和低位元組相同)。

例:如下demo是可以的,能把陣列中的元素值都設定成字元1,

#include #include using namespace std;

int main()

而,如下程式想把陣列中的元素值設定成1,卻是不可行的:

#include #include #include using namespace std;

int main()

因為第乙個程式的陣列a是字元型的,字元型佔據記憶體大小是1byte,而memset函式也是以位元組為單位進行賦值的,所以你輸出沒有問題。而第二個程式a是整型的,使用 memset還是按位元組賦值,這樣賦值完以後,每個陣列元素的值實際上是0x01010101即十進位制的16843009。

如果用memset(a,1,20),就是對a指向的記憶體的20個位元組進行賦值,每個都用數1去填充,轉為二進位制後,1就是00000001,佔乙個位元組。乙個int元素是4位元組,合一起是0000 0001,0000 0001,0000 0001,0000 0001,轉化成十六進製制就是0x01010101,就等於16843009,就完成了對乙個int元素的賦值了。

memset也可以用來清空 結構體和結構體陣列。

如:

struct sample_struct

對於 結構體型別的 變數:

******_struct test;

// 一般情況下,清空sttest的方法:

sttest.name = null;

sttest.years = 0;

//用memset就非常方便:

memset(&test, 0, sizeof(sample_struct));

對於 結構體型別的 陣列:

sample_struct test[10];

memset(test, 0, sizeof(structsample_struct)*10);

// 但是: 如果結構體中有陣列的話還是需要對陣列單獨進行初始化處理的。

學習於:

this用法小結

this主要是用作引用乙個類的當前例項物件,也可以用在擴充套件方法裡面,我主要總結一下前者的主要用途。1.用來限定被相同名字隱藏的類成員。這裡主要指的就是建構函式。比如 public employee4 string name,string id 這是乙個類的建構函式,this.name是之前宣告的...

static用法小結

static關鍵字是c,c 中都存在的關鍵字,它主要有三種使用方式,其中前兩種只指在c語言中使用,第三種在c 中使用 c,c 中具體細微操作不盡相同,本文以c 為準 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 下面就這三種使用方式及注意事項分別說明 一 區域性靜態變數 在...

const 用法小結

const用法小結 關於c 中的const關鍵字的用法非常靈活,而使用const將大大改善程式的健壯性。1.const常量,如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在...