初始化指向另一个结构内部结构的指针 我有两个指针变量( Primugsgg < /Cuff>和 Curruimsg < /代码>)到C++源文件中的另一个结构定义中的结构: typedef struct { bool re_pop_required; bool concurrent_popups; MlGuiMsg* prevGuiMsg; MlGuiMsg* currGuiMsg; uint32_t first_popup; uint32_t second_popup; }RePopup; < > >代码> M1Guimsg < /code > --Stutt是在一个不同的C头文件中定义的(我在混合C和C++代码)。指向结构的指针作为参数传递给源文件中的函数,我希望将参数指向的数据存储在指针变量prevGuiMsg和currGuiMsg中

初始化指向另一个结构内部结构的指针 我有两个指针变量( Primugsgg < /Cuff>和 Curruimsg < /代码>)到C++源文件中的另一个结构定义中的结构: typedef struct { bool re_pop_required; bool concurrent_popups; MlGuiMsg* prevGuiMsg; MlGuiMsg* currGuiMsg; uint32_t first_popup; uint32_t second_popup; }RePopup; < > >代码> M1Guimsg < /code > --Stutt是在一个不同的C头文件中定义的(我在混合C和C++代码)。指向结构的指针作为参数传递给源文件中的函数,我希望将参数指向的数据存储在指针变量prevGuiMsg和currGuiMsg中,c++,c,pointers,struct,C++,C,Pointers,Struct,希望明确声明类型结构变量 Reopopu并初始化其成员,以及C++源文件中的声明: RePopup rp = {false, false, 0, 0, 0, 0}; 因此,我的问题是:是否可以/应该在另一个结构的显式声明中使用零来初始化指向该结构的指针?您应该使用nullptr而不是0,否则初始化指向0的指针没有错。您应该使用nullptr而不是0但是,否则初始化指向0的指针没有错。使用nullptr而不是0有什么好处?如果他使用的是C++11或更高版本,那么是的。@AbdelAleem直接初

希望明确声明类型结构变量<代码> Reopopu并初始化其成员,以及C++源文件中的声明:

RePopup rp = {false, false, 0, 0, 0, 0};

因此,我的问题是:是否可以/应该在另一个结构的显式声明中使用零来初始化指向该结构的指针?

您应该使用
nullptr
而不是
0
,否则初始化指向0的指针没有错。

您应该使用
nullptr
而不是
0
但是,否则初始化指向0的指针没有错。

使用nullptr而不是0有什么好处?如果他使用的是C++11或更高版本,那么是的。@AbdelAleem直接初始化这样的指针成员在技术上没有什么区别,但在涉及重载函数和/或模板的某些情况下,它可能会有所不同。因此,默认情况下对所有指针都使用它是一种好的做法,这也使代码的意图更加清晰。这意味着您明确表示,初始化指针时为null。此外,如果您不小心尝试将
nullptr
赋值给整数,也会出现错误。e、 g.如果您将初始值设定项错误输入为
{false,false,0,nullptr,nullptr,0}
它不会compile@AbdelAleem仅在这种特殊情况下使用自文档功能,但这通常是一个好习惯。使用nullptr而不是0有什么好处?如果他使用的是C++11或更高版本,是的。@AbdelAleem像这样直接初始化指针成员在技术上不会有什么区别,但在涉及重载函数和/或模板的某些情况下,它可能会有所不同。因此,默认情况下对所有指针都使用它是一种好的做法,这也使代码的意图更加清晰。这意味着您明确表示,初始化指针时为null。此外,如果您不小心尝试将
nullptr
赋值给整数,也会出现错误。e、 g.如果您将初始值设定项错误输入为
{false,false,0,nullptr,nullptr,0}
它不会compile@AbdelAleem自我记录只在这种特殊情况下,但这通常是一个好习惯。