在C中初始化多维数组

时间:2014-07-23 13:54:27

标签: c multidimensional-array

我正在尝试以下列方式初始化多维数组,但我不确定它是否正确。我正在重新初始化使用多维数组实现的大型表,我不知道该怎么做。我需要一次初始化整行,不能单独初始化元素。

int array[3][3];
int ind = 0;
array[ind++] = {1,2,3};
array[ind++] = {4,5,6};
array[ind++] = {7,8,9};

好的,所以我做不了类似的事情    array [3] [3] = {{1,2,3},{4,5,6},{7,8,9}}; 因为我真正想做的就是这样的事情

int array[][3];
int ind = 0;
array[ind++] = {1,2,3};
if(contion1)
   array[ind++] = {4,5,6};
else 
   array[ind++] = {0,0,0};
array[ind++] = {7,8,9};

我希望这更清楚。这不是理想的,我知道,但我用#ifs这样的代码移交了代码

int array[][3] = {
     {1,2,3},
     #if contion1
        {4,5,6},
     #else 
        {0,0,0},
    {7,8,9}};

并被要求摆脱#ifs。

3 个答案:

答案 0 :(得分:3)

请改用以下声明:

int array[3][3] = {
                   {1, 2, 3},
                   {4, 5, 6},
                   {7, 8, 9}
                  };

答案 1 :(得分:1)

要重新初始化,您必须使用循环

for ( i = 0; i < 3; i++) {
    condition = // whatever your condition is 
    for ( n =0; n < 3; n++) {
        // if condition is zero your value is 0 non-zero condition gets the calculated value
        array[i][n] = condition ? ( i * 3) + n + 1 : 0;
    }
}

答案 2 :(得分:1)

所以你基本上想要一个循环:

int num = 1;
for(i = 0 ; i < 3 ; i++)
{
    for(j = 0 ; j < 3 ; j++)
    {
        arr[i][j] = num;
        num++;
    }
}

就这么简单。您无法在一行中初始化数组 - 仅在第一个声明中。 你所说的是循环的想法。