Funkcja rekurencyjna z tablicą dwuwymiarową - kod nie kompiluje się

0

Siema, napisałem funkcje która ma za zadanie sprawdzić, czy dana liczba jest w kolumnach tablicy dwuwymiarowej. Jeśli tak to ma zwrócić -1 jeśli nie ma to ma zwrócić 1.

int sprawdzanie_powt(int *tab,int N,int M,int szukana, int wiersz,int  kolumna)
{	
	if(kolumna==M) return 0;
	if(*(tab+wiersz *M+kolumna)==szukana) return -1;
	return sprawdzanie_powt(&tab[0][0],N,M,szukana,wiersz,kolumna+1);
}

niestety program się nie kompiluje :( dostaje komunikat :

[Error] invalid types 'int[int]' for array subscript.
1

[Error] invalid types 'int[int]' for array subscript

To oznacza: "Błędne typy int [ int ] w indeksie (może: indeksowaniu) tablicy". Rzeczywiście są błędne, ponieważ próbujesz dostać się do elementu tablicy, indeksując intem adres wskaźnika (który jest także int – jak mniemam, o to tu chodzi), a nie sam wskaźnik (z tego, co udało mi się wywnioskować – dawno programowałem w C++).

Tutaj popatrz przede wszystkim: https://stackoverflow.com/a/21273509
A potem tu: https://stackoverflow.com/a/11829889
A potem jeszcze tu: :) https://www.tutorialspoint.com/cplusplus/cpp_passing_pointers_to_functions.htm


EDIT:
Tu ciekawe informacje: http://www.cplusplus.com/doc/tutorial/pointers/

& is the address-of operator, and can be read simply as "address of"

(...)

The concept of arrays is related to that of pointers. In fact, arrays work very much like pointers to their first elements (...).


EDIT 2:
W mojej ocenie – wystarczy usunąć & i ten błąd powinien zniknąć.

1
sprawdzanie_powt(&tab[0][0],N,M,szukana,wiersz,kolumna+1);

tam ma być samo tab, ewentualnie &tab[0];
to nie jest dwuwymiarowe, lecz zwyczajny wektor - wskaźnik.

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