初始化缓冲区的正确方法

The correct way to initialize a buffer

以下哪一个是将缓冲区初始化为零的正确方法?

WCHAR szBuffer[100]={};

WCHAR szBuffer[100]={0};

WCHAR szBuffer[100]={'[=10=]'};

WCHAR szBuffer[100]{};

WCHAR szBuffer[100];
wmemset(szBuffer, '[=10=]', 100);

它们都是等价的。

不过我会避免使用 (2) 和 (3),因为它们会给某些人一种错误的印象,即您可以将任何字符放在那里来填充数组,而实际上它只控制第一个字符数组,其余总是归零。