C memset 函式和bzero 函式

2021-08-28 14:10:17 字數 1451 閱讀 8683

2、類物件使用memset應注意的問題

3、bzero()函式簡介

memset()的函式,它可以一位元組一位元組地把整個陣列設定為乙個指定的值。它把陣列的起始位址作為其第乙個引數,第二個引數是設定陣列每個位元組的值,第三個引數是陣列的長度(位元組數,不是元素個數)。memcpy用來做記憶體拷貝,你可以拿它拷貝任何資料型別的物件,可以指定拷貝的資料長度。

#include

// 將s中的前n個位元組用ch替換並且返回s,

void

*memset

(void

*s,int ch,size_t n)

memset

(buffer,0,

sizeof

(buffer)

)// 這個函式在socket很常用。

char a[

100]

;memset

(a,'/0'

,sizeof

(a))

;// 初始化陣列。

// 在一段記憶體塊中填充某乙個給定的值,常用於較大的對結構體和陣列的清零操作。

struct sample_struct

;memset

(&sttest,0,

sizeof

(struct sample_struct));

// 如果是陣列:

struct sample_struct test[10]

;memset

(test,0,

sizeof

(struct sample_struct)*10

);

memset某個結構(或其它的資料型別)在c語言中是很常見的**,其目的是對結構(或其它的資料型別)進行初始化,通常都是將變數置為null或者0。在c++中,針對類物件除了用建構函式初始化物件外,也可以使用memset來進行初始化操作(確實有這種情況,不得已而為之,請大家不要把雞蛋砸過來!)。但是一定要注意以下所說的這種情況:如果類包含虛函式,則不能用 memset 來初始化類物件。

因為每個包含虛函式的類物件都有乙個指標指向虛函式表(v-table),這個指標被用於解決執行時以及動態型別強制轉換時虛函式的呼叫問題。當進行memset操作時,虛函式表裡的指標置null,這樣一來,只要呼叫虛函式,程式便崩潰。

#include

// bzero() 會將記憶體塊(字串)的前n個位元組清零;

// s為記憶體(字串)指標,n 為需要清零的位元組數。

// 在網路程式設計中會經常用到。

void

bzero

(void

*s,int n)

;

bzero函式簡介

原型 extern void bzero void s,int n 引數說明 s 要置零的 資料的起始位址 n 要置零的資料位元組個數。用法 include 功能 置位元組 字串s的前n個位元組為零且包括 0 說明 bzero無返回值,並且使用string.h標頭檔案,string.h曾經是posi...

bzero函式 Poll 函式

使用poll函式實現i o復用.poll允許工作在任何描述符中,poll提供的功能與select函式類似。函式原型如下 include返回 若有就緒描述符則為其數目,若超時返回0,出錯返回 1 第乙個引數是指向乙個結構體陣列第乙個元素的指標。每個元素都是乙個pollfd結構,用於指定測試某個給定描述...

C memset 函式 詳解

memset dp,0,sizeof dp int 型別的變數一般占用4個位元組,對每乙個位元組賦值0的話就變成了 00000000 00000000 000000000 00000000 即10進製數中的0 賦值為 1的話,放的是 11111111 11111111 11111111 111111...