当作为指向结构的指针的成员传递时,将 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;
...
在 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;
...