Mutatókat igen gyakran használunk függvényhívásoknál. Ennek oka az, hogy a hagyományos C nyelvben minden, függvénynek átadott paraméter érték szerint kerül át. A függvénynek jogában áll paramétereinek értékét módosítani, de a módosítás nem hat vissza a paraméterként álló változóra. Ha az f1 függvény definíciója a következõ:
void f1(long a) { a += 2L; } /* end f1() */akkor a függvény semmi hasznosat sem fog csinálni (a BORLAND C++ figyelmeztet is rá), azaz a következõ kódrészlet után
alfa = 0L; f1(alfa);alfa értéke nulla lesz. Hogyan lehet akkor olyan függvényt írni, amelyiknek kimenõ vagy átmenõ paraméterei is vannak? Természetesen a pointerek felhasználásával. Az adott mutató ugyan érték szerint kerül át, de az általa mutatott tárterület tartalmát a hívott függvény indirekció útján megváltoztathatja. Ilyen függvényt a pointerekre vonatkozó "ökölszabályunk" segítségével készíthetünk, azaz a függvényben a módosítandó paraméter minden elõfordulását a zárójelezett indirekciós formával helyettesítjük:
void f1(long (*a)) { (*a) += 2L; } /* end f1() */és a hívásban is ennek megfelelõen a változó helyébe annak címe kerül:
alfa = 0L; f1(&alfa);A fenti kódrészlet után alfa 2-t fog tartalmazni.
A C++ az ún. reference type segítségével
sokkal áttekinthetõbb megoldást nyújt a cím
szerinti paraméterátadásra. Ezzel majd a 2.1.2-es
pontban foglakozunk bõvebben.