fill和memset 陣列填充跟陣列初始化

2021-09-10 15:08:40 字數 1314 閱讀 9347

原型:

void *memset(void *s, int ch, size_t n)

功能是:

將s所指向的某一塊記憶體中的前n個 位元組的內容全部設定為ch指定的ascii值, 第乙個值為指定的記憶體位址,塊的大小由第三個引數指定,

這個函式通常為新申請的記憶體做初始化工作, 其返回值為指向s的指標。

注意:這邊是對前n個位元組進行賦值,而且還是ascii的形式,那就是說,對於字元陣列,可以將其初始化為任意乙個字元,那對於其他基礎型別的陣列呢?

那只能說一聲抱歉了,因為memset按位元組對記憶體塊進行初始化,所以他無法對int陣列初始化除了0和-1以外的其他數,但可以初始化為無窮大0x3f3f3f3f

#include

#include

using namespace std;

intmain()

memset可以對char型陣列初始化成任何字元:

char a[5]

[100];

memset

(a,'a'

,sizeof

(a))

;for

(int i=

0;i<

4;i++

)for

(int i=

0;i<

4;i++

) cout<

}

以上**執行結果如圖1所示:

無 「 a[i][strlen(a[i])]=『0』; 」 這一句。則執行結果如圖2所示:(即在memset初始化的情況下,輸入a【i】後,a【i】末尾的下乙個位置是為空的)

函式引數 fill(first,last,val)

first,last 對應陣列的範圍,val為元素的值

fill 顧名思義 這個函式是用來填充的,例如我們想對乙個陣列賦值,那麼

#include

#include

using namespace std;

intmain()

所以當我們想對陣列賦值時,使用fill 函式還是比較方便

fill和memset的區別

最主要的區別是memset是按照位元組填充的。按照單元賦值,將乙個區間的元素都賦予val值。函式引數 fill vec.begin vec.end val val為將要替換的值。include fill vec.begin vec.end val 原來容器中每個元素被重置為val按照位元組填充某字元...

fill函式,fill與memset函式的區別

全文參考自 柳婼 的部落格 按照位元組填充某字元 在標頭檔案裡面 按照單元賦值,將乙個區間的元素都賦同乙個值 在標頭檔案裡面 因為memset函式按照位元組填充,所以一般memset只能用來填充char型陣列,因為只有char型佔乙個位元組 如果填充int型陣列,除了0和 1,其他的不能。因為只有0...

c 中memset和fill的區別

參考 傳送門 memset函式 在 include中 按照位元組填充 適用0,1 fill函式 在 incude中 按照單元賦值,將乙個區間的元素都賦同乙個值 說明 因為memset函式按照位元組填充,所以一般memset只能用來填充char型陣列,因為只有char型佔乙個位元組 如果填充int型陣...