【问题标题】:The correct way to initialize a buffer初始化缓冲区的正确方法
【发布时间】:2021-10-27 22:51:36
【问题描述】:

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

WCHAR szBuffer[100]={};

WCHAR szBuffer[100]={0};

WCHAR szBuffer[100]={'\0'};

WCHAR szBuffer[100]{};

WCHAR szBuffer[100];
wmemset(szBuffer, '\0', 100);

【问题讨论】:

  • 前两个是等价的;第三个不编译;第四个不是初始化(并且使用了一个神秘且可能不正确的大小参数)。
  • 我修好了第三个和第四个
  • 第四个 stil 的尺寸不正确。
  • 现在前三个是等价的,第四个肯定有错误的大小参数。
  • std::array szBuffer{};请务必使用基于范围的 for 循环或稍后在循环中使用 szBuffer.size()。所以你不必在你的代码中输入 100

标签: c++ visual-c++ c++17 c++14


【解决方案1】:

它们都是等价的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2019-10-24
    • 2019-10-03
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多