anoniem Geplaatst: 26 april 2009 Delen Geplaatst: 26 april 2009 stel ik heb: [code:1:368ba03352]int wereld[Xmax][Ymax]; functie(wereld, Xmax, Ymax);[/code:1:368ba03352] in int main(). Nu wil ik in de functie deze array gaan ophalen. [code:1:368ba03352]void functie(tabel[][],Xmax,Ymax[/code:1:368ba03352] Bij een ééndimensionale array werkt dit (dus tabel[]), maar zodra er meerdere dimensies bij komen snapt ie het ineens niet meer. Hoe kan ik toch een multidimensionale array doorgeven aan een functie, waarvan de grootte wordt gedefinieerd in int main(), bijv met een cin >> Xmax >> Ymax ??? Quote Link naar reactie
anoniem Geplaatst: 27 april 2009 Auteur Delen Geplaatst: 27 april 2009 Ik weet het niet helemaal zeker, maar volgens mij zit het zo: Als je in C++ een array als parameter meegeeft, wil de compiler weten hoe groot de elementen in de array zijn (hoeveel geheugen ze innemen). Bij een array van integers is dat dus makkelijk (elk element in de array heeft de grootte van een integer). Een tweedimensionale array is eigenlijk een array van arrays. Op deze manier kan de compiler echter niet zien hoe groot de 'elementen' zijn in de 'array', oftewel hoe groot de arrays zijn in de lijst met arrays. Om dit op te lossen zou je de grootte van de arrays in de arrays mee kunnen geven als volgt: [code:1:6c34709ae4]void functie(int tabel[][5], int Xmax, int Ymax)[/code:1:6c34709ae4] Bovenstaande zou moeten werken. Nadeel is echter dat je dan gebonden bent aan een bepaalde grootte van je arrays. Een alternatief is om het adres naar de tweedimensionale array als pointer mee te geven aan je functie. Dan zou je niet gebonden zijn aan een vaste grootte, alleen is dit wellicht wat complexer te realiseren. Quote Link naar reactie
anoniem Geplaatst: 27 april 2009 Auteur Delen Geplaatst: 27 april 2009 sorry, ik was in mijn code de 'int's vergeten. Hoe geef ik zo'n adres mee dan? Quote Link naar reactie
anoniem Geplaatst: 27 april 2009 Auteur Delen Geplaatst: 27 april 2009 Hmm, het is voor mij ook allemaal weer even geleden, maar zoals ik [url=http://www.eskimo.com/~scs/cclass/int/sx9a.html]hier (klik)[/url] lees is het dus niet mogelijk met pointers. Wat je wel zou kunnen doen is gebruik maken van een Vector (zie [url=http://www.devx.com/cplus/Article/16328/0/page/6]hier, tip 19[/url]). Een andere optie is om je multidimensionale array als een 1-dimensionale array op te slaan (pseudo-multidimensionaal). Dus dan krijg je: [code:1:31eb7c7bed]int wereld[Xmax * Ymax];[/code:1:31eb7c7bed] Om dan element wereld[x][y] op te vragen, gebruik je dit: [code:1:31eb7c7bed]wereld[y * Xmax + x];[/code:1:31eb7c7bed] Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen