我正在搞乱结构,并注意到以下两个例子,只有一个有效.他们来了:
struct Test { char *name; int age; }; Test p1 = { "hi", 5 }; //works struct Test { char *name; int age; }p1; p1 = { "hi", 5 }; //error
为什么第一个编译而第二个编译不?不是任何一种方式p1
的对象Test
?谢谢.
在第一个示例中,您将在"大括号初始化" 中初始化具有两个值的结构.C++(或C)中不支持使用括号括起的列表分配给结构.
但是,您可以使用大括号初始化创建一个新结构,然后将其分配给旧结构(p
).C++(和C)支持将一个结构分配给同一类型的另一个结构.
例如,在C++ 11中:
p1 = Test{ "hi", 5 };