c++ - 声明指向结构的指针后的值是多少

标签 c++ pointers struct

例如,在我声明一个节点结构之后

struct node {
    int data;
    node *next;
}
int main(){
    node *root = new node;
}

我知道它会自动将 root->data 初始化为 0,但是 root->next 会发生什么。是初始化为 nullptr 还是什么?

最佳答案

这些成员都不会像现在这样被初始化。如果您希望将它们分别设置为它们的“默认值”0nullptr,您可以使用如下内容:

struct node {
    int data {};
    node *next {};
};

现在,在每个新实例中,您将拥有 data == 0next == nullptr。此 C++11 功能称为“默认成员初始化器”


如果您不能使用 C++11,您可以通过以下方式实现此值初始化

node* root = new node();  // <- Note the parenthesis 

作为@vsoftco指出或通过 aggregate initialization像这样:

node root = {};

但是,如果可能的话,我更喜欢这篇文章顶部的变体,因为它会减少出错的机会。

关于c++ - 声明指向结构的指针后的值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34097502/

相关文章:

c++ - 这两段代码有何不同?

c++ - 如何让本地匿名 C++ 函数对象使用包含方法的参数?

c++ - 指针内存分配

c - 访问指针使其值改变

c++ - constexpr 静态结构类成员的冲突声明

c++ - 通过指针访问结构中的值? (C++)

c# - 尝试从 flatbuffer 的二进制文件访问 "LengthofTable"时出现 SystemAccessOutOfbound 异常

c++ - 虚继承与多态 : Is the cereal library messing with object layout?

c - 多线程 - 使用线程执行将文件内容存储在 char **array 中的函数?

C 编程为什么我的代码不能使用嵌套结构数组打印正确的输出?