在声明时以C编程语言初始化2D数组
double myArray[3][12] = {0};
,或者,如果你想避免gcc的警告 “失踪各地初始括号”(警告似乎与-Wall
或者更具体地说-Wmissing-braces
)
double myArray[3][12] = {{0}};
我认为这将是
double myArray[3][12] = {0}
如果你想用零初始化,您执行以下操作:
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 } };
+1指出如何初始化所有内容......但为什么你缩短了数组? :P – pmg 2009-11-06 16:48:10
我缩短了数组,因为我不想输入十二组数字。 – 2009-11-06 17:15:26
您可以使用
double myArray[3][12] = { 0 };
或
double myArray[3][12];
memset(myArray, 0, sizeof(double) * 3 * 12);
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
空初始化器无效C(我相信它是有效的C++)。 – pmg 2012-04-25 08:15:49
pmg的方法效果最好,因为它的工作原理是,如果你部分初始化任何数组,其余部分的默认值为零。否则,你可以声明数组为全局变量,当未初始化时,数组元素将自动设置为默认值(取决于编译器)为零。
@JSBգչոգչ想出了用实际值初始化的语法,它与问题的标题完全匹配,这使我在这里(我对索引的顺序感兴趣)。
myArray[3][2] = { { 0.1, 0.2 }, { 1.1, 1.2 }, { 2.1, 2.2 } };
第一个索引是行索引是最慢的索引。这被称为C顺序而不是F(Fortran)顺序。
如果使用段落代码块(行首的四个空格),则会获得语法高亮度,如果使用内嵌块(反向),则不会使用该语法。 – 2009-11-06 16:43:07
谢谢,编辑。当我回答时,我处于反拨模式:) – pmg 2009-11-06 16:44:23
好的非常感谢! – 2009-11-06 18:06:27