C++ 如何将结构变量初始化为默认值?

C++ 如何将结构变量初始化为默认值?,c++,struct,initialization,C++,Struct,Initialization,我现在正在学习结构,并尝试为该结构类型的每个变量创建默认值。我的测试代码如下: #include<iostream> using namespace std; int main (void){ // DECLARING THE STRUCTURE struct str_client{ char name[20] = "\0"; int age = 0; double money = 0.00

我现在正在学习结构,并尝试为该结构类型的每个变量创建默认值。我的测试代码如下:

#include<iostream>
using namespace std;

int main (void){

    // DECLARING THE STRUCTURE
    struct str_client{
            char name[20] = "\0";
            int age = 0; 
            double money = 0.00; 
    };

    // DECLARING A VARIABLE OF THAT STRUCTURE TYPE (IN THIS CASE, AN ARRAY).
    str_client client[3];

return (0);}
#包括
使用名称空间std;
内部主(空){
//声明结构
str_结构客户端{
字符名[20]=“\0”;
int年龄=0;
双倍货币=0.00;
};
//声明该结构类型的变量(在本例中为数组)。
stru客户端[3];
返回(0);}
这种初始化方法正确吗?

使用构造函数。 因为类和结构是相似的

struct str_client{
        string name;
        int age; 
        double money; 
        str_client()
        {
            name = "";
            age = 0;
            money = 0.0;
        }
};
编辑 使用成员初始值设定项列表将提高性能

struct str_client{
        string name;
        int age; 
        double money; 
        str_client()
            : name(""), age(0), money(0.0)
        {
        }
};

C++中的数组是从零开始索引的。@ NeilButterworth解决了一半的问题(为什么输出不正确)。我据此对问题进行了编辑。现在的问题在于初始化结构变量的正确方法。
“\0”
是无用的。写
。编译器添加了自己的
\0
。这是用默认值初始化结构的一个非常好的方法。这对您合适吗?我还没有学习这部分(类)!但最好事先知道另一种方法。谢谢,这是个糟糕的建议。仅初始化构造函数中的成员,前提是它们依赖于传递给构造函数的参数,或者它们的值是在构造时估计的。此外,仅在不可能的情况下才使用构造函数和构造函数体的初始化列表@用户10906383在创建对象时传递值也是个好主意。str_client={“\0”,0,0.0};这可以在没有构造函数的情况下实现。