char[] 字符数组初始化

时间:2022-07-13 19:45:37
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用于清零操作,其本质是一样的。