在 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/