创建具有不同长度的静态数组

时间:2013-11-21 09:57:15

标签: c arrays static

我需要在静态内存中创建数组,但行长不同。我可以在编译时计算每一行的大小,但我不知道如何写下它或者甚至可能。

有什么想法吗?提前谢谢......

2 个答案:

答案 0 :(得分:6)

您不能拥有数组数组,因为数组只能有一种类型的元素,而T[N]T[M]是不同的类型。

但是,你可以有一个指针数组:

T a0[5], a1[7], a2[21], a3[2];

T * arr[] = { a0, a1, a2, a3 };

现在您可以使用arr[0][i]等。

答案 1 :(得分:2)

您可以使用使用复合文字初始化的指针数组

double* A[] = {
    (double[]){ init00, init012, [45] = init3, },
    (double[]){ init10, init11, init3 },
    (double[34]){ 0.0 },
};

只要您能保证在编译时已知初始化程序和大小,所有这些分配都将以静态方式完成。复合文字避免了您必须声明临时变量并规范程序的命名空间。