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用于清零操作,其本质是一样的。