Funkcja przyjmująca jako parametr tablicę statyczną

0

W jaki sposób określić nagłówek funkcji, która jako parametr będzie przyjmować tablicę statyczną dwuwymiarową o dowolnym rozmiarze? Chciałbym używać takiej funkcji do wypisywania zawartości tablic (macierzy). Czyli potrzebuję coś w rodzaju:

void wypisz(int tablica[][], int liczbaWierszy, int liczbaKolumn)
{
	for (int i = 0; i < liczbaWierszy; i++)
	{
            for (int j = 0; j < liczbaKolumn; j++)
                cout << tablica[i][j] << " ";

            cout << "\n";
	}
}

tyle, że taki zapis oczywiście nie działa. Nie wiem jak określić parametr tablicowy tak, by nie trzeba było podawać w nagłówku funkcji drugiego wymiaru tablicy (o ile w ogóle jest to możliwe dla tablic statycznych).

2

Np. tak:

template <class T>
void wypisz(T tablica, int liczbaWierszy, int liczbaKolumn)

Albo tak:

#define wypisz(tablica, liczbaWierszy, liczbaKolumn) for (int i = 0; i < liczbaWierszy; i++) \
        { \
            for (int j = 0; j < liczbaKolumn; j++) \
                cout << tablica[i][j] << " "; \
            cout << "\n"; \
        }
0

Zastosuj wskaźnik do pierwszego elementu i nie cuduj (ciało funkcji będzie wciąż identyczne).

1

Przy użyciu szablonów można w ogóle pominąć przekazywanie wymiarów, póki tylko tablica jest statyczna.

template <typename T,size_t M, size_t N>
void foo(T(&tab)[M][N])
{

}
1
void wypisz(char* wskaznik, int kolumny, int wiersze) 

Masz wtedy wskaznik na pierwszy element i dzieki niemu odczytasz kazda wartosc ze swojej tablicy np. zeby odczytac drugi wiersz z trzeciej kolumny:

cout<<&wskaznik[3*wiersze+2] 

Cos w tym stylu...

0

Wielkie dzięki za pomoc. Użyłem sposobu @gswidwa, gdyż szablonów jeszcze nie stosowałem, ale dzięki za cenne wskazówki na przyszłość.

1 użytkowników online, w tym zalogowanych: 0, gości: 1