【问题标题】:Initializing const array from another array从另一个数组初始化 const 数组
【发布时间】:2018-03-27 05:12:42
【问题描述】:

关于下面的代码,有没有办法初始化 arr0[]arr1[] 以匹配输入参数选择的另外两个数组之一?或者是否可以使arr0[]arr1[] 成为一个常量数组?谢谢。

#define LENGTH 4

void foo(char id) {

    const char arr_a0[] = {2,1,2,1};
    const char arr_a1[] = {4,5,6,7};

    const char arr_b0[] = {3,3,3,4};
    const char arr_b1[] = {1,5,8,9};

    char arr0[LENGTH];
    char arr1[LENGTH];
    int i;

    switch(id) {
    case 'a':
        for (i = 0; i < LENGTH; ++i) {
            arr0[i] = arr_a0[i];
            arr1[i] = arr_a1[i];
        }
        break;  

    case 'b':
    default:
        for (i = 0; i < LENGTH; ++i) {
            arr0[i] = arr_b0[i];
            arr1[i] = arr_b1[i];
        }
        break;
    }

    /* Do something with arr0[] and arr1[] */
}

【问题讨论】:

标签: c arrays initialization constants


【解决方案1】:

根据某些条件,您似乎实际上不需要从两个常量数组初始化两个数组。 (这有时被称为 XY 问题。)

您的问题是否可以使初始化数组保持不变似乎表明您可以使用两个指针。
将这两个指针初始化为指向一对常量数组中的一个。

如果没有使用两个“条件初始化数组”的代码,或者使用建议的替代概念,使用两个指向常量数组的指针,这个答案不能给出完整的代码解决方案。
我相信您的评论表明基本概念已经解决了您的问题。

【讨论】:

  • 当然有一些陷阱,就像使用指针一样,所以请随时更新您的问题,例如“编辑:我使用指向常量数组的指针接近了我的目标,但是现在. ……”。在对您的问题发表评论时联系我,我会尽力提供帮助。
猜你喜欢
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 2013-10-21
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多