A tak w ogóle to co oznaczają te dwójki w kwadratowych nawiasach przy deklaracji funkcji? Przecież to nie ma żadnego wpływu na przekazywanie argumentu. (pobawiłem się 5 minut przy tej funkcji i nie udało mi się jej wywołać XDD)
NIE można mieć kontroli nad tym, jak dużą tablicę przekazujesz. Myślisz, że przy deklaracji takiej funkcji:
void funkcja( int tablica[ 2 ] );
Myślisz, że nie dam rady posłać tam tablicy 100-elementowej? Bez problemu :-)
Poza tym, co znaczy: const char* way[ 2 ] ?
Jeśli chcesz przekazać tablicę jako argument to masz 2 sposoby:
const char * tablica
const char tablica[]
Połączenia ich jeszcze nigdy nie widziałem. Pokażcie mi jak wywołać funkcję z takim parametrem: (mi się nie udało, może wam XD)
const char * tablica[]
Jak wspomniałem, dwójki z nawiasów wyrzuciłem, bo nic nie znaczą. Kompilator je olewa.
Napisałem funkcję podobną do Twojej. Ma takie same parametry
void funkcja( const char c[], int tab[] )
{
cout << c[ 0 ];
cout << tab[ 0 ];
}
Wywołujemy ją z takimi argumentami: (przykładowo)
int tab[] = { 0, 1, 2 }; // tablica int
char tab2[] = { 'a', 'b', 'c' }; // tablica char
funkcja( tab2, tab );
Powyższa definicja funkcji może również wyglądać tak:
void funkcja( const char * c, int * tab )
{
cout << c[ 0 ];
cout << tab[ 0 ];
}
Nie wpłynie to w żaden sposób na wywoływanie funkcji. Tablica to przecież wskaźnik z własnym obszarem. Masz w tym przypadku dowolność.