char[] 字符數組初始化


1 char szBuffer[1024] = {0};
2 char szBuffer[1024] = {_T('\0')};

以上兩種方法是等價的,均是將字符數組szBuffer初始化為空字符串。

因為'\0'是字符串的結束標志,其ASCII碼為0。

然而

1 char szBuffer[1024] = {'0'};

 

則是將字符數組初始化為字符'0'。

 另外2種初始化方式:

1 char szBuffer[1024];
2 ZeroMemory(szBuffer,1024); 
3 
4 
5 
6 ZeroMemory(szBuffer,size0f(szBuffer));

 

1 char szBuffer[1024];
2 memset(szBuffer, 0, 1024);
3 
4 
5 memset(szBuffer, 0, sizeof(szBuffer));

1ZeroMemory

聲明

  void ZeroMemory( PVOIDDestination,SIZE_T Length );

參數

  Destination :指向一塊准備用0來填充的內存區域的開始地址。

  Length :准備用0來填充的內存區域的大小,按字節來計算。

返回值

  無

作用

  ZeroMemory只是將指定的內存塊清零。

2memset

需要的頭文件
  <memory.h> or <string.h>
函數原型
  void *memset(void *s, int ch, unsigned n);
  void *memset(void *s, int c, size_t n);
  memset:作用是在一段內存塊中填充某個給定的值,它是對較大的結構體或數組進行清零操作的一種最快方法。

 

ZeroMemorymemset的區別:

  1、ZeroMemory是微軟的SDK提供的,memset是屬於CRun-time Library提供的。因此ZeroMemory只能用於Windows系統,而memset還可用於其他系統。

  2、ZeroMemory是一個宏,只是用於把一段內存的內容置零,內部其實是用 memset實現的,而memset除了對內存進行清零操作,還可以將內存置成別的字符。

  3、如果程序是Win32程序而且不想連接c運行時庫,就用ZeroMemory;如果需要跨平台,就用memset。

  所以,如果ZeroMemory和memset用於清零操作,其本質是一樣的。

 


免責聲明!

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



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