/*
Zdravím,
mám dotaz, není mi jasné proč nemohu předat funkci dvojrozměrné pole
jako parametr, které nebylo dynamicky alokované. Uvedu to na příkladu.
Respektive ono asi mohu, ale nejspíš musím vyplnit velikosti, což mi ale moc
nevyhovuje. Neví někdo náhodou zda by to šlo nějak udělat, aniž bych ho musel
alokovat dynamicky a zároveň neuvádět jeho velikosti?
*/
void fce_ok (int **arg_ok){}
void fce_bad_arg(int arg_bad[ ][ ]){}
int main (int argc, char * argv[])
{
const int SIZE = 2;
int arg_bad[SIZE ][SIZE ];
int ** arg_ok = new int*[ SIZE ];
for (int x= 0; x < SIZE; x++)
arg_ok [ x ] = new int [ SIZE ];
fce_ok( arg_ok );
fce_bad_arg (arg_bad); // zde je chyba
return 0;
}
Fórum › C / C++
C++ předání vícerozměrného pole jako parametr
protoze kompilator netusi jak velke to pole pak je... nevi jaky rozmer ma ta prvni [ ] ... nevi cim to nasobit...
jinak pokud mas staticky definovany dvourozmerny pole tak je to tak jak tak v pameti za sebou...
muzes udelat:
void fce_bad_arg(int * arg_bad){}
fce_bad_arg ((int *) arg_bad );
a pak misto arg_bad[i][j] pouzit arg_bad[ i*rozmer + j ]
kdy rozmer bude jak je velkej jeden radek... tj maximalni j+1
to KIIV: jasny mas pravdu. Zkousel sem to a opravdu to funguje.
Nicméně způsob arg_bad[i*rozmer + j] neni zrovna moc elegantni.
Takze to nakonec udělam asi ještě trochu jinak. Kazdopadne diky moc za objasnění;-)
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 108 hostů
Podobná vlákna
Předání dvourozměrného pole jako parametr — založil finch
Předání struktury jako parametr funkce — založil avalagne
Předání metody třídy jako parametr fce — založil Doomista
C# pole jako parametr funkce — založil Geralt
Pole jako parametr typu reference — založil end
Moderátoři diskuze