Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Multidimensionale array als functieparameter (c++)

Capone
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

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