C++中的多维数组初始化

Lev*_*rov 1 c++ c++11

我正在读"Sams每天一小时自学C++",并且被"第4课"所困扰.它说我可以使用以下代码初始化多维数组的所有元素:

int x[n][m] = {1};
Run Code Online (Sandbox Code Playgroud)

但据我所知,这是错误的.这段代码创建的数组只有一个元素(x [0] [0])等于1.这本书是错误还是什么?

AnT*_*AnT 8

好吧,这个声明确实会初始化数组的所有元素.但是,只有元素x[0][0]才会被初始化1.其余元素(如果有)将初始化为0.

所以,正式的书是正确的(如果你正确引用它).你只是误解了它说的话.

  • @tadman:那是假的.与C一样,C++遵循聚合初始化中的"All-Or-Nothing"原则.当您为聚合的一部分提供显式初始化程序时,其余部分总是为您默认初始化.在C中,`= {0}`初始化器是众所周知的通用/惯用的方式来零初始化任何东西. (3认同)
  • @Lev Zakharov:不知道您所说的“作品”是什么。如果要将所有元素初始化为相同的值,那么可以,它仅适用于零。否则,它的工作方式如上所述。在C ++中,您可以简单地说`int x [n] [m] = {}`或`int x [n] [m] {}`将所有内容归零。 (2认同)