使用C编程语言在声明时初始化2D数组
当我声明它时,如何用0s初始化2D数组?
double myArray[3][12] = ?
double myArray[3][12] = {0};
或者,如果你想避免gcc警告“在初始化程序周围丢失大括号”(警告显示为-Wall
或更具体地说是-Wmissing-braces
)
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 } };
然而,pmg的方法是正确的
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
(第一个元素是唯一一个设置为指定值,其余元素设置为零)
这个问题(c初始化具有一个默认值的普通数组)有更多信息
@JSBձոգչ提出了用实际值初始化的语法,它完全匹配问题的标题,这使我在这里(我对索引的顺序感兴趣)。
myArray[3][2] = { { 0.1, 0.2 }, { 1.1, 1.2 }, { 2.1, 2.2 } };
第一个索引是行索引是最慢的索引。 这被称为C阶而不是F(Fortran)阶。
我认为这将是
double myArray[3][12] = {0}
你可以用
double myArray[3][12] = { 0 };
要么
double myArray[3][12]; memset(myArray, 0, sizeof(double) * 3 * 12);
pmg的方法效果最好,因为它适用于如果你部分初始化任何数组,其余部分得到默认值零的概念。 否则,你可以将数组声明为全局变量,并且在未初始化时,数组元素将自动设置为默认值(取决于编译器)为零。