从另一个数组初始化const数组

时间:2018-03-27 05:12:43

标签: c arrays initialization const

关于下面的代码,有没有办法初始化 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[] */
}

1 个答案:

答案 0 :(得分:1)

看起来你实际上并不需要根据一些条件从两个常量数组初始化两个数组。 (这有时称为XY问题。)

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

没有代码使用两个&#34;有条件初始化的数组&#34;或者,使用提出的替代概念,使用两个指向常量数组的指针,这个答案无法给出完整的代码解决方案。
我相信你的评论表明基本概念已经解决了你的问题。