C++ 为什么有些数组在C++;?

C++ 为什么有些数组在C++;?,c++,arrays,C++,Arrays,我只是想知道为什么有些数组是这样写的 intarr[]={3,4,6,9,11} 为什么不能这样写呢 int-arr[5]={3,4,6,9,11} 有什么好处?当您不在括号中写入任何数字时,这意味着数组的大小将等于初始化的元素数 当你在那里输入一些数字时,你给了数组一个大小 intarr[]={1,7,5};//数组的大小为3 int arr[3]={1,7,5};//数组的大小为3 int arr[5]={1,7,5};//数组的大小为5 当您知道您将需要此数量的项目,但您还没有这些项目时

我只是想知道为什么有些数组是这样写的

intarr[]={3,4,6,9,11}

为什么不能这样写呢

int-arr[5]={3,4,6,9,11}


有什么好处?

当您不在括号中写入任何数字时,这意味着数组的大小将等于初始化的元素数

当你在那里输入一些数字时,你给了数组一个大小

intarr[]={1,7,5};//数组的大小为3
int arr[3]={1,7,5};//数组的大小为3
int arr[5]={1,7,5};//数组的大小为5
当您知道您将需要此数量的项目,但您还没有这些项目时,使用定义的大小声明是好的。 如果没有定义大小,则更容易编写

为什么不能这样写呢

前提是错误的。它可以用两种方式写

有什么好处

大小是冗余信息。我们已经通过提供5个初始化器隐式地给出了大小5。在开发过程中,当信息意外地失去同步时,提供冗余信息可能会导致错误

例如,如果程序员后来决定最后11个元素不应该在那里,并且应该删除,在数组中留下4个元素,那么进行更改的程序员可能不会注意到大小也必须更改,导致最后一个元素未按预期移除,而是替换为值初始化元素的情况

如果数组的大小应该与初始化器的数量相同,则不显式指定该大小更安全。不明确指定尺寸是为了遵循“不要重复自己”的原则


另一方面,如果不管初始化器的数量如何,数组的大小始终假定为5,那么明确指定大小就可以实现这一点。我怀疑这种情况在实践中比较少见(除非根本没有初始化器)。请注意,您可能应该使用常量变量而不是幻数来表示大小。

第一个变量让您省略数字,这样您就不必计算有多少个元素。使添加/删除元素变得更容易。重复Ted所说的,您获得了灵活性。第二个示例被认为是“脆弱的”,因为现在对数组元素的更改至少需要另外一次手动更改。