2009-11-06 73 views

回答

29
double myArray[3][12] = {0}; 

,或者,如果你想避免gcc的警告 “失踪各地初始括号”(警告似乎与-Wall或者更具体地说-Wmissing-braces

double myArray[3][12] = {{0}}; 
+0

如果使用段落代码块(行首的四个空格),则会获得语法高亮度,如果使用内嵌块(反向),则不会使用该语法。 – 2009-11-06 16:43:07

+0

谢谢,编辑。当我回答时,我处于反拨模式:) – pmg 2009-11-06 16:44:23

+0

好的非常感谢! – 2009-11-06 18:06:27

1

我认为这将是

double myArray[3][12] = {0} 
9

如果你想用零初始化,您执行以下操作:

double myArray[3][12] = { 0 }; 

如果你要填写实际值,你可以嵌套括号:

double myArray[3][3] = { { 0.1, 0.2, 0.3 }, { 1.1, 1.2, 1.3 }, { 2.1, 2.2, 2.3 } }; 
+0

+1指出如何初始化所有内容......但为什么你缩短了数组? :P – pmg 2009-11-06 16:48:10

+9

我缩短了数组,因为我不想输入十二组数字。 – 2009-11-06 17:15:26

1

您可以使用

double myArray[3][12] = { 0 }; 

double myArray[3][12]; 
memset(myArray, 0, sizeof(double) * 3 * 12); 
6

pmg' s方法是正确的,但是,请注意,

double myArray[3][12] = {{}}; 

会给出相同的结果。

另外,请记住,

double myArray[3][12] = {{some_number}}; 

您预期的那样,当some_number为零才会工作。

例如,如果我说

double myArray[2][3] = {{3.1}}; 

数组不会是充满3.1的,而不是这将是

3.1 0.0 0.0 
0.0 0.0 0.0 

(第一个元素是国内唯一一家集其余设置为零)

This question (c initialization of a normal array with one default value) has more information

+1

空初始化器无效C(我相信它是有效的C++)。 – pmg 2012-04-25 08:15:49

0

pmg的方法效果最好,因为它的工作原理是,如果你部分初始化任何数组,其余部分的默认值为零。否则,你可以声明数组为全局变量,当未初始化时,数组元素将自动设置为默认值(取决于编译器)为零。

1

@JSBգչոգչ想出了用实际值初始化的语法,它与问题的标题完全匹配,这使我在这里(我对索引的顺序感兴趣)。

myArray[3][2] = { { 0.1, 0.2 }, { 1.1, 1.2 }, { 2.1, 2.2 } }; 

第一个索引是行索引是最慢的索引。这被称为C顺序而不是F(Fortran)顺序。