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));
(1)ZeroMemory
聲明
void ZeroMemory( PVOIDDestination,SIZE_T Length );
參數
Destination :指向一塊准備用0來填充的內存區域的開始地址。
Length :准備用0來填充的內存區域的大小,按字節來計算。
返回值
無
作用
ZeroMemory只是將指定的內存塊清零。
(2)memset
需要的頭文件
<memory.h> or <string.h>
函數原型
void *memset(void *s, int ch, unsigned n);
void *memset(void *s, int c, size_t n);
memset:作用是在一段內存塊中填充某個給定的值,它是對較大的結構體或數組進行清零操作的一種最快方法。
ZeroMemory和memset的區別:
1、ZeroMemory是微軟的SDK提供的,memset是屬於CRun-time Library提供的。因此ZeroMemory只能用於Windows系統,而memset還可用於其他系統。
2、ZeroMemory是一個宏,只是用於把一段內存的內容置零,內部其實是用 memset實現的,而memset除了對內存進行清零操作,還可以將內存置成別的字符。
3、如果程序是Win32程序而且不想連接c運行時庫,就用ZeroMemory;如果需要跨平台,就用memset。
所以,如果ZeroMemory和memset用於清零操作,其本質是一樣的。