Prosím nevíte někdo jak předat funkci jako parametr 2D-pole ?
Potřeboval bych aby ta funkce vypsala hodnoty toho pole na obrazovku. Vím jak předat funkci jako parametr normální pole, ale s tím dvourozměrným si nevím rady.
Fórum › C / C++
Dvourozměrné pole
Simte a co s tim mas za problem?
V tom nic neni
some_one napsal:
asi takhle:
void vypis_pole(int w, int h, int ** pole)
{
...
}
vol?n?:
int[20][20] p;
vypis_pole(20,20,p);
(jen mi tam mo?n? chyb? dereference)
Bohužel tak tohle mi nefunkuje. Při kompilaci mi to na řádku, kde se volí funkce hlásí chybu : cannot convert `int (*)[5]' to `int**' for argument `3' to `void vypis_pole(int, int, int**)'
some_one napsal:
asi takhle:
void vypis_pole(int w, int h, int ** pole)
{
...
}
volání:
int[20][20] p;
vypis_pole(20,20,p);
(jen mi tam možná chybí dereference)
int[20][20] p;
skus to zmenit na
int p[20][20]
2 some_one , mal by si uz nieco v C++ napisat :)
some_one napsal:
Jsem si p?esn? ??kal, ?e v tenhle ??dek ur?it? nap??u blb? :D
jinak, pokud si pamatuju, tak by to mo?n? se?rali i:
void vypis_pole(int w, int h, int p[][]);
ale jist? si moc nejsem
U? jsem na to p?i?el, je to n?co podobn?ho tomu co jsi napsal
int p[5][5];
vypis_pole(5,5,p); // Vol?n?
// Akor?t m?sto - void vypis_pole(int w, int h, int p[][])
void vypis_pole(int w, int h, int p[][5])
{
...
}
T-erorrr napsal:
some_one napsal:
Jsem si přesně říkal, že v tenhle řádek určitě napíšu blbě :D
jinak, pokud si pamatuju, tak by to možná sežrali i:
void vypis_pole(int w, int h, int p[][]);
ale jistý si moc nejsem
Už jsem na to přišel, je to něco podobného tomu co jsi napsal
int p[5][5];
vypis_pole(5,5,p); // Volání
// Akorát místo - void vypis_pole(int w, int h, int p[][])
void vypis_pole(int w, int h, int p[][5])
{
...
}
Uff.. Ono je potreba vedet, jak se predavaji pole funkcim. U jednorozmerneho pole je to jednoduche- preda se ukazatel na prvni prvek pole. U vicerozmernych poli se to zacina trochu komplikovat -predava se ukazatel na pole, tzn. tato konstrukce:
int pole( size_t rows, int (*p)[5]);
nebo ukazatel na prvni radku pole, tedy jak jsi napsal vyse.
Ale v obou pripadech je nutne predavat pocet sloupcu!!!
No, a nakonec, jak se predava pole pointru - jednoduse, jak uz napsal
some_one jako pointer na pointer.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Dvourozměrné pole nebo pole struktur? — založil mardon
Dvourozměrné pole — založil Yenkee
Dvourozměrné pole — založil kok1n
C++,Dvourozmerne pole — založil mokvar
Dvourozmerne pole — založil Merik
Moderátoři diskuze