Jak mogę przekazać do funkcji odwołanie do dwuwymiarowej tablicy?
Próbuję przekazać odniesienie do dwuwymiarowej tablicy do funkcji w C ++. Znam rozmiar obu pomiarów w czasie kompilacji. Oto, co mam teraz:
const int board_width = 80;
const int board_height = 80;
void do_something(int[board_width][board_height]& array);//function prototype
Ale to nie działa. Otrzymuję ten błąd z g ++:
error: expected ‘,’ or ‘...’ before ‘*’ token
Co oznacza ten błąd i jak mogę go naprawić?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
5 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Zrób to z
W rzeczywistości zostanie przekazany wskaźnik do pierwszej pod-tablicy dwuwymiarowej tablicy („board_width” jest całkowicie ignorowany, jak w zdegenerowanym przypadku posiadania tylko jednego wymiaru, gdy masz
int array []
biorąc wskaźnik), co prawdopodobnie nie jest tym, czego chcesz (ponieważ wyraźnie poprosiłeś o link). Więc zrobienie tego z linkiem używającym sizeof dla parametru da ci (tak jakbyś robił to ze sobą argument ), robiąc to drugą metodą (deklarując parametr jako tablicę, co zmusza kompilator do konwersji go na wskaźnik), otrzymujeszsizeof (int (*) [board_height])
, a zatem , tylko rozmiar wskaźnika. [/code]Anonimowy użytkownik
Potwierdzenie od:
lub odpowiednik
void ModifyArray( int (*arr)[80] );
Wewnątrz funkcji arr może być używany w taki sam sposób, jak gdyby deklaracja funkcji była:
Jedynym przypadkiem, w którym to się nie powiedzie, jest sytuacja, w której wywoływana funkcja wymaga statycznie sprawdzonej gwarancji rozmiaru pierwszego indeksu tablicy.
Anonimowy użytkownik
Potwierdzenie od:
cdecl
lub
c++decl
.
Anonimowy użytkownik
Potwierdzenie od:
Weźmy przykład tablicy 1D
Możesz więc zrobić to samo dla macierzy 2D, jak pokazano poniżej
Anonimowy użytkownik
Potwierdzenie od:
Nie można przekazać tablicy odwołań do funkcji.