Is it possible to define an 2D array in C with variable (but fixed) 2nd dimension? So what I want is more or less something like
int array[3][] = {{1},{1,2},{1,2,3}}
[...] Is there any way to get there where the length of array[0] = 1, array[1] = 2 and array[2]=3?
No, there isn't.
C arrays are sequences of elements of the same type. The number and type of the elements are attributes of each array type, not of the array objects having that type. C array indexing depends fundamentally on that.
C 2D arrays are arrays where the element type is a specific array type (with, therefore, a specific number of elements). Thus,
int array[3][2];
declares array to be an array of three elements, each one an array of two ints.
What you can do is have an array of pointers to arrays of various lengths. For example:
int el0[] = { 1 };
int el1[] = { 1, 2 };
int el2[] = { 1, 2, 3 };
int *array[] = { el0, el1, el2 };
In some important respects, you can handle such an array much the same way that you do a bona fide 2D array. Note, however, that that requires either assumptions or separate bookkeeping about the lengths of the pointed-to arrays, and that the three 1D arrays are not necessarily contiguous in memory.