Vraag & Antwoord

Programmeren

Multidimensionale array als functieparameter (c++)

3 antwoorden
  • 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 ???
  • 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.
  • sorry, ik was in mijn code de 'int's vergeten. Hoe geef ik zo'n adres mee dan?

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.