如何初始化数组?

use*_*048 4 c

我有一个3dimensional数组,如何在没有3个循环的情况下将其初始化为默认值.

dummy[4][4][1024]
Run Code Online (Sandbox Code Playgroud)

,如何将所有元素初始化为12?

Dan*_*her 10

由于3-d数组是连续的内存块,因此可以将其视为1-d数组

int i, *dummy2 = &dummy[0][0][0];
for(i = 0; i < 4*4*1024; ++i)
    dummy2[i] = 12;
Run Code Online (Sandbox Code Playgroud)

  • 这是未定义的行为. (10认同)

Mic*_*gan 7

来吧伙伴们 - 让我们这样做的方式总是有效:


for(int i = 0; i < 4; i++)
{
  for(int j = 0; j < 4; j++)
  {
    for(int k = 0; k < 1024; k++)
    {
      dummy[i][j][k] = 12;
    }
  }
}

Run Code Online (Sandbox Code Playgroud)


Jen*_*edt 5

所有零的默认初始化就是:

unsigned dummy[4][4][1024] = { 0 };
Run Code Online (Sandbox Code Playgroud)

如果要初始化特定元素(以及所有其他元素为零),请执行此操作

unsigned dummy[4][4][1024] = { { { 5 }, { 0, 4 } } };
Run Code Online (Sandbox Code Playgroud)

如果你的编译器知道C99使用指定的初始化器

unsigned dummy[4][4][1024] = { [3] = { [2] = { [0] = 7 }, [1] = { [2] = 3, [1] = 4 } } };
Run Code Online (Sandbox Code Playgroud)

如果你真的坚持使用所有12,只需重复1216384次:)