memset 初始化數組


memset是初始化一段內存區域的函數,其頭文件是<string.h>,以前經常使用出現錯誤,整理一下。

C++ Reference對於memset的定義為:

void * memset ( void * ptr, int value, size_t num );

其中,對於memset的各個參數的定義如下:

ptr: Pointer to the block of memory to fill.

value: Value to be set. The value is passed as an int, but the function fills the block of memory using the unsigned char conversion of this value.、

num:Number of bytes to be set to the value.

在參數的說明中,提到value值是按照int類型進行的傳遞,但是在填充的時候是將value值轉換為unsigned char進行填充。因此,在使用memset進行內存初始化的時候,value值應該傳遞的是一個字節的值。

對int類型的內存區域進行初始化,ptr的類型是int*,舉例說明一下:

1.   將內存初始化為0

memset(ptr,0,sizeof(ptr));

2.  將內存初始化為-1

memset(ptr,0xff,sizeof(ptr));

  因為按照字節進行填充,那么value值為0xff,將會把內存的每個字節都填充為0xff,則int值的區域為全1,那么int值就是-1。

3.  將內存初始化為極大值

memset(ptr,0x3f,sizeof(ptr));

  這段初始化代碼初始出來的int值大小是1061109567

如果要將int內存區域統一初始化為1,那memset就無能為力了。

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM