Matthias Pleh <s...@alter.com> napisał(a):

void foo(char[] a) {}
void bar(char[][] b) {}

int main(string[] args)
{
     char[4] a;
     char[4][4] b;
     foo(a);        // OK: implicit convertion
     bar(b);        // Error: cannot implicitly convert
                    //        char[4u][4u] to char[][]
}

what is the reason for the different behaviour?

I *think* it's because multi-dim static arrays are a strip of contiguous memory and no length information is held with the data, so if it was converted to a dynamic array of arrays (who do hold their lengths), there wouldn't be room for the lengths of the arrays.

What's best to pass such multidimensional arrays?

Good question. Maybe new char[][](4) and point the inner arrays to the chunks of the static array?

--
Tomek

Reply via email to