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

标签 c++ arrays initializer

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

相关文章:

c++ - QT:qmake 无法识别 3dcore、3drender

c++ - 队列中 pop() 的内存浪费

java - 在 Java 中是否可以覆盖 Objects 数组的 'toString'?

C++ 数组初始值设定项

c++ - 是否可以使用 SIMD 指令进行替换?

从函数返回字符串的 C++ 错误

Java返回原始数组的数组地址

javascript - 使用 push() 将对象添加到对象中

swift 初始化程序同时可选和非可选?

c - 如何在 C 中使用 malloc 初始化静态指针?