原型:
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)fill 顧名思義 這個函式是用來填充的,例如我們想對乙個陣列賦值,那麼first,last 對應陣列的範圍,val為元素的值
#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型陣...