如何使用struct构造函数初始化结构中的指针数组?

时间:2017-09-14 17:47:41

标签: c++ arrays constructor initialization

我尝试memset喜欢

struct TreeNode {
    bool exist;
    bool word_ending;
    TreeNode* branches[3];
    TreeNode(): exist(true), word_ending(false) {
        memset(branches, NULL, sizeof(branches));
    }
};

但出现了警告

warning: implicit conversion of NULL constant to 'int' [-Wnull-conversion]
        memset(branches, NULL, sizeof(branches));
        ~~~~~~           ^~~~
                         0
1 warning generated.

是否有其他方法可以将指针数组初始化为NULL

1 个答案:

答案 0 :(得分:4)

我们可以在成员初始化列表中初始化数组,而不是使用memset。如果我们使用

TreeNode(): exist{true}, word_ending{false}, braches{} {}

然后braches将初始化为零。这是有效的,因为初始化列表中每个丢失的初始化程序都会导致相应的元素初始化为零。