C中的数组数组,其中数组的长度不同

osk*_*osk 2 c arrays

我知道你可以轻松制作一个固定长度的矩阵:

double m[][2];
Run Code Online (Sandbox Code Playgroud)

但是,我希望有一个数据结构是一个数组,其中我存储了具有不同长度的double类型的数组.我怎么做?

一个例子是:

arr1 = {1,2,3,4};
arr2 = {1,2};
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

锯齿状数组通常表示为指向C的指针数组:

double arr0[] = {4, 1, 7};
double arr1[] = {1, 2, 3, 4};
double arr2[] = {1, 2};
double *m[] = {arr0, arr1, arr2};
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有标准语法用于与外部指针数组"在线"定义内部数组.

请注意,现在无法找到每个内部数组的长度,因此您需要添加某种"标记",或分别存储长度:

#define SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
...
size_t len[] = { SIZE(arr0), SIZE(arr1), SIZE(arr2) };
Run Code Online (Sandbox Code Playgroud)