当作为指向结构的指针的成员传递时,将 C 数组清零

Clearing a C array to zero when passed as a member of a pointer to a struct

在 C++ 中,当我有结构定义时

struct foo
{
    ...
};

struct bar
{
    foo FooData[10];
    ...
};

我想写一个函数

void Baz(bar *Bar)
{
    Bar->FooData = {};
}

我收到一个错误(Visual Studio Community 2013 中的 C3079)"an initializer-list cannot be used as the right operand of this assignment operator."

然而这种语法在

这样的情况下似乎工作正常
int Array[10];
Array = {};
...

为什么前面的例子编译失败?

关于您的问题:您可以在定义数组时使用“{}”……但之后不能。

关于这个问题,我建议memset

memset(Bar->FooData, 0, sizeof (bar->FooData));

如果你想动态分配 FooData,你可以这样定义你的结构:

struct bar
{
    foo *FooData;
    ...