我需要在静态内存中创建数组,但行长不同。我可以在编译时计算每一行的大小,但我不知道如何写下它或者甚至可能。
有什么想法吗?提前谢谢......
答案 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 },
};
只要您能保证在编译时已知初始化程序和大小,所有这些分配都将以静态方式完成。复合文字避免了您必须声明临时变量并规范程序的命名空间。