1. 程式人生 > >C++ memset函式

C++ memset函式

memset函式是計算機中C/C++語言初始化函式,將s所指向的某一塊記憶體中的後n個位元組的內容全部設定為ch指定的ASCII值,第一個值為指定的記憶體地址,塊的大小由第三個引數指定,這個函式通常為新申請的記憶體做初始化工作,返回值為s。

需要的標頭檔案:在C中<string.h> 、在C++中<cstring>

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

函式解釋:將s中當前位置後面的n個位元組(typedef unsigned int size_t)用ch替換並返回s

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

1、void *memset(void *s,int c,size_t n)

總的作用:將已開闢記憶體空間 s 的首 n 個位元組的值設為值 c。

2、memset()函式常用於記憶體空間初始化。

    char str[100];
    memset(str,0,100);

3、memset()的深刻內涵:用來對一段記憶體空間全部設定為某個字元,一般用在對定義的字串進行初始化為‘ ’或‘/0’;例:char a[100];memset(a, '/0', sizeof(a));
    memcpy用來做記憶體拷貝,你可以拿它拷貝任何資料型別的物件,可以指定拷貝的資料長度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),會造成b的記憶體地址溢位。
      strcpy就只能拷貝字串了,它遇到'/0'就結束拷貝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字串長度(第一個‘/0’之前)是否超過50位,如超過,則會造成b的記憶體地址溢位。