【问题标题】:initializing multidimensional array in C在C中初始化多维数组
【发布时间】:2014-07-23 22:36:44
【问题描述】:

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

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

好的,所以我不能做类似的事情 数组[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。

【问题讨论】:

标签: c multidimensional-array


【解决方案1】:

请改用以下声明:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-04-03
        • 2015-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 2015-08-01
        相关资源
        最近更新 更多