Tworzę funkcję zwracającą tablicę:
int table[3]
int fun(int);
void proc(int);
int (*fun(int o[3]))[3]{
int (*pointer_table)[3];
pointer_table = &table;
return pointer_table;
}
void proc(int x)
{
fun(table);
}
Powyższy prototyp funkcji fun przechodzi kompilację.
int table[3]
int fun(int);
void proc(int);
void proc(int x)
{
fun(table);
}
int (*fun(int o[3]))[3]{
int (*pointer_table)[3];
pointer_table = &table;
return pointer_table;
}
Gdyby jednak zadeklarować proc przed fun to uzna to za błąd - "invalid conversion from int*' to
int' ".
Próbuję w takim razie przerobić prototyp fun na int (nnn(int))[3] i znowu się kompiluje - w obu powyższych przypadkach (choć nie wiem dlaczego musi być int*, a nie int). Teraz jednak zmieniam argument dla fun z o[3] na o[3][1] i znowu powstaje błąd. W innym przypadku, gdy próbuję dodać argument i funkcja wygląda tak int (*fun(int o[3], int e[3]))[3] nie potrafię zbudować dla niej prototypu. Poniższy nie działa :
int (*nnn(int*, int*))[3];
Wypisuje, że "too few arguments to function `int (* nnn(int*, int*))[3]' "
Dlaczego więc o[3][1] nie przechodzi i jak skonstruować prototyp dla wieloargumentowej funkcji (argumenty mogą być różne - np. (int a, int b[1], int c[2][3]) ) zwracającej tablicę ?