在C语言中声明时初始化二维数组

z8dt9xmd  于 2022-12-26  发布在  其他
关注(0)|答案(7)|浏览(132)

当我声明一个二维数组时,如何用0初始化它?
第一个月

cbwuti44

cbwuti441#

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

或者,如果您希望避免gcc警告“初始化式周围缺少大括号”(该警告与-Wall一起出现,或者更具体地说,与-Wmissing-braces一起出现)

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

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 } };
ig9co6j1

ig9co6j13#

存储器布局可以是相关的(例如,对于串行化)。

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

**第一个索引是行索引,是最慢的索引。**这称为C阶,与F(Fortran)阶相对。

e5nszbig

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)包含更多信息

lnxxn5zx

lnxxn5zx5#

我想会的

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

g2ieeal76#

您可以使用

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

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

rxztt3cl7#

PMG的方法工作得最好,因为它基于这样的概念工作:如果U部分地初始化任何数组,则其余数组获得默认值零。否则,U可以将数组声明为全局变量,并且当未初始化时,数组元素将自动设置为默认值(取决于编译器)零。

相关问题