我试图理解数组和结构初始化。我见过两种变体:
int arr[10]{};
int arr[10] = {};
它们之间有什么区别?我尝试查看 https://godbolt.org/ ,两者似乎都编译为相同的指令,但我想知道在其他情况下它们是否有差异,或者其中之一更可取。我认为第二个选项创建第二个数组并将其分配给第一个数组,这更浪费,但不太确定幕后发生了什么。这两种方法在幕后做同样的事情。
列表初始化
int arr[10]{};
上面的代码直接告诉编译器将所有元素初始化为默认值0。
赋值初始化
int arr[10] = {};
上面的代码创建了一个包含零个元素的临时初始值设定项列表,并将其分配给数组。然后编译器使用列表中的值初始化每个元素。
性能没有差异。
第一种方式通常是首选,因为它更干净,更容易阅读。