不同结构初始化方法之间的差异 我知道在C++中有很多不同的方法来完成同样的事情。但是,我想知道这些初始化结构的方法之间的区别。我也想知道C++的做事方式是什么,我知道有些方法是从C.< struct MyStruct { int x, y, z; }; MyStruct s1 = { 0 }; //I think this is from C but not really sure. MyStruct s2 = { }; //I think this might be from C++ MyStruct s3 = { sizeof(MyStruct) } ; //Not sure where this comes from but I like it C++编程时,我应该使用什么? < P> MyStults3= {siZeof(MyStRet)};不太可能执行您认为它可以执行的操作: struct MyStruct { int a; int b; };

不同结构初始化方法之间的差异 我知道在C++中有很多不同的方法来完成同样的事情。但是,我想知道这些初始化结构的方法之间的区别。我也想知道C++的做事方式是什么,我知道有些方法是从C.< struct MyStruct { int x, y, z; }; MyStruct s1 = { 0 }; //I think this is from C but not really sure. MyStruct s2 = { }; //I think this might be from C++ MyStruct s3 = { sizeof(MyStruct) } ; //Not sure where this comes from but I like it C++编程时,我应该使用什么? < P> MyStults3= {siZeof(MyStRet)};不太可能执行您认为它可以执行的操作: struct MyStruct { int a; int b; };,c++,C++,在这个例子中,mystructs3={sizeof(MyStruct)}将把x3.a初始化为8,将x3.b初始化为0。(假设POD类型,而不是新的统一初始化语法) 三是C++中的有效初始化,假设结构体有一个可以从整数初始化的第一个元素。第三个选项将结构的第一个成员设置为结构的大小,其余字段保留为零初始化 MyStruct s1 = { 0 }; //I think this is from C but not really sure. 前两个在C++中是等价的,虽然第二个不是有效的C,如在C

在这个例子中,
mystructs3={sizeof(MyStruct)}
将把
x3.a
初始化为8,将
x3.b
初始化为0。(假设POD类型,而不是新的统一初始化语法)

三是C++中的有效初始化,假设结构体有一个可以从整数初始化的第一个元素。第三个选项将结构的第一个成员设置为结构的大小,其余字段保留为零初始化

MyStruct s1 = { 0 };  //I think this is from C but not really sure.

前两个在C++中是等价的,虽然第二个不是有效的C,如在C中,必须在括号内传递至少一个值。

(假设C++)S1,你将MyStruct中的第一个变量初始化为零。对于s3,您正在将其初始化为结构的大小。在这两种情况下,编译器将转换您提供的值,以适合MyStruct中第一个列出的变量的类型

MyStruct s1 = { 0 };
使用这种初始化方式,您将初始化结构的第一个元素。如果值与元素类型不对应,编译器(例如gcc或g++)将尝试进行一些隐式转换。所有其他元素都将设置为默认值

MyStruct s3 = { sizeof(MyStruct) };
完全相同,第一个元素值将是结构的大小(以字节为单位)

MyStruct s2 = { };

<>最后,此初始化仅在C++中有效,C中的等价项是代码> MyStultS2;<代码>。它将所有值初始化为默认值。

第一个函数将结构元素初始化为零,并在C中将其指针初始化为null。 及

但C++中没有。在C++中,初始化第一个元素。

MyStruct s1 = { 0 };  //I think this is from C but not really sure.

第二个在C++中等于0,如1),对于C/<

MyStruct s2 = { };
第三个将第一个元素的值设置为C和C中MyStruct的大小++

MyStruct s3 = { sizeof(MyStruct) } ; //Not sure where this comes from but I like it

MyStruct的定义是什么?只是普通数据,有关系吗?比如说5整数。你能用精确的定义编辑你的代码吗?它将帮助我们理解您的初始化代码。哦,好吧,那么它将第一个成员设置为结构本身的大小?是的,因为这是您告诉它的。我想是我做的,我的错误。谢谢,这就是我要找的!