当我声明一个二维数组时,如何用0初始化它?第一个月
cbwuti441#
double myArray[3][12] = {0};
或者,如果您希望避免gcc警告“初始化式周围缺少大括号”(该警告与-Wall一起出现,或者更具体地说,与-Wmissing-braces一起出现)
-Wall
-Wmissing-braces
double myArray[3][12] = {{0}};
bihw5rsg2#
如果要使用零初始化,请执行以下操作:
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 } };
ig9co6j13#
存储器布局可以是相关的(例如,对于串行化)。
myArray[3][2] = { { 0.1, 0.2 }, { 1.1, 1.2 }, { 2.1, 2.2 } };
**第一个索引是行索引,是最慢的索引。**这称为C阶,与F(Fortran)阶相对。
e5nszbig4#
pmg的方法是正确的,但是,注意
double myArray[3][12] = {{}};
将给予相同的结果。另外,请记住
double myArray[3][12] = {{some_number}};
只有在some_number为零时才能按预期工作。例如,如果我说
double myArray[2][3] = {{3.1}};
数组将不会充满3.1,而是充满3.1
3.1 0.0 0.0 0.0 0.0 0.0
(the第一个元素是唯一一个设置为指定值的元素,其余元素设置为零)此question (c initialization of a normal array with one default value)包含更多信息
lnxxn5zx5#
我想会的
double myArray[3][12] = {0}
g2ieeal76#
您可以使用
或
double myArray[3][12]; memset(myArray, 0, sizeof(double) * 3 * 12);
rxztt3cl7#
PMG的方法工作得最好,因为它基于这样的概念工作:如果U部分地初始化任何数组,则其余数组获得默认值零。否则,U可以将数组声明为全局变量,并且当未初始化时,数组元素将自动设置为默认值(取决于编译器)零。
7条答案
按热度按时间cbwuti441#
或者,如果您希望避免gcc警告“初始化式周围缺少大括号”(该警告与
-Wall
一起出现,或者更具体地说,与-Wmissing-braces
一起出现)bihw5rsg2#
如果要使用零初始化,请执行以下操作:
如果要填充实际值,可以嵌套大括号:
ig9co6j13#
存储器布局可以是相关的(例如,对于串行化)。
**第一个索引是行索引,是最慢的索引。**这称为C阶,与F(Fortran)阶相对。
e5nszbig4#
pmg的方法是正确的,但是,注意
将给予相同的结果。
另外,请记住
只有在some_number为零时才能按预期工作。
例如,如果我说
数组将不会充满3.1,而是充满3.1
(the第一个元素是唯一一个设置为指定值的元素,其余元素设置为零)
此question (c initialization of a normal array with one default value)包含更多信息
lnxxn5zx5#
我想会的
g2ieeal76#
您可以使用
或
rxztt3cl7#
PMG的方法工作得最好,因为它基于这样的概念工作:如果U部分地初始化任何数组,则其余数组获得默认值零。否则,U可以将数组声明为全局变量,并且当未初始化时,数组元素将自动设置为默认值(取决于编译器)零。