您的位置:首页 > 其它

char[] 字符数组初始化

2014-03-16 15:36 183 查看
char szBuffer[1024] = {0};
char szBuffer[1024] = {_T('\0')};


以上两种方法是等价的,均是将字符数组szBuffer初始化为空字符串。

因为'\0'是字符串的结束标志,其ASCII码为0。

然而

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


则是将字符数组初始化为字符'0'。

另外2种初始化方式:

char szBuffer[1024];
ZeroMemory(szBuffer,1024);

ZeroMemory(szBuffer,size0f(szBuffer));


char szBuffer[1024];
memset(szBuffer, 0, 1024);

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用于清零操作,其本质是一样的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: