Új hozzászólás Aktív témák

  • Zsolt1

    tag

    Sziasztok!
    Egy olyan kérdésem lenne, hogy egy rekurzív függvény hívásnál, ahol a függvény paramétere egy tömb, ott miért módosul az eredeti tömb a rekurzióból visszatérés után? Elvileg úgy lenne logikus, hogy mivel azt a tömböt csak paraméterként átadom a függvénynek rekurzív hívásnál és az ott abban a fv-ben az újonnan létrehozok egy tömböt, akkor csak odafelé adom át az értékeket, visszafele nincs módosítás, és miután lefutott a rekurzív fv., akkor a felső szinten nem változik meg a tömb tartalma. Azért nem értem a dolgot, mert pont e-miatt kell ugye változó helyett pointert használnom, ha meg akarom tartani az értéket a rekurzióból visszatérés után is.
    Ez most szerintem kicsit össze-vissza lett ezért írok inkább egy példát, hogy mire gondoltam:
    void rekurzivfv(int tomb[][M]) { //definiálom a fv-t és megadom paraméternek a tömböt
    ...függvényen belüli műveletek amik módosítják a tömb tartalmát....
    rekurzivfv(tomb); //meghívom a fv-t, ami megkapja a tömböt
    ...itt már a tömb elemeinek értéke módosult, ahhoz képest, ami a függvény elején volt, arra
    amire a rekurzió alatt változott pedig elvileg nem szabadna, mert a rekurzív fv-nél a fv újra
    létrehozza a tömböt és miután a végigfutott, az innen már nem lehetne elérhető, mert
    semmilyen formában nem adtam vissza...
    }

    Az jutott az eszembe még, hogy a teljes tömb átadásakor ott igazából tömb elejére mutató címet adom csak át (ha jól tudom), szóval olyan mintha az egy pointer lenne elvileg. Lehet, hogy az miatt módosul?
    Meg lehet valahogy azt oldani, hogy ne módosuljon a rekurzív meghívás alatt az alap függvényben a tömb? Előre is köszönöm a segítséget! :R

Új hozzászólás Aktív témák