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

struct foo
{
    ...
};

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

我想写一个函数
void Baz(bar *Bar)
{
    Bar->FooData = {};
}

我收到一个错误(在Visual Studio Community 2013中为C3079)“初始化程序列表不能用作此赋值运算符的正确操作数。”

然而,这种语法在以下情况下似乎可以正常工作
int Array[10];
Array = {};
...

为什么前面的示例无法编译?

最佳答案

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

关于这个问题,我建议memset
memset(Bar->FooData, 0, sizeof (bar->FooData));
如果要动态分配FooData,则可以这样定义结构:

struct bar
{
    foo *FooData;
    ...

关于c++ - 作为指针传递给结构体时,将C数组清零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32212474/

10-11 05:42