Subpunt anterior Subpunt posterior Punt precedent Titol Contingut


3.5. Punters a paràmetres.

- En aquest apartat es tracta el concepte de pas de paràmetres per referència, doncs es tracta de rebre l'adreça d'una variable i, per tant, un paràmetre per referència és llavors un punter. Es tracta de definir els paràmetres d'una funció com a punters a variables del tipus associat al paràmetre (tipus més asterísc, seguit del nom del paràmetre). Quan es cridi a la funció, però, caldrà anar amb compte de passar l'adreça de les variables i no el valor (cal aplicar l'operador '&' davant el nom de les variables que es passen com a paràmetre).

ex 3.11: Aquest exemple mostra com definir el pas de variables de tipus enter per referència. El programa principal crida a una funció que intercanvia el valor de dos variables enteres si la primera variable és menor que la segona. Com que passem les adreces de les variables, els canvis des de la funció a través dels punters afecten al contingut d'aquestes variables:

- Quan es tracta de passar un vector com a paràmetre és molt aconsellable fer-ho per referència. En el cas dels paràmetres només cal escriure uns claudàtors sense cap número dins. Per exemple:

- En el cas dels strings, però, s'acostuma a definir els paràmetres com a punters a char, però és equivalent al mètode anterior;

ex 3.12: Definició de paràmetre string com a punter. El programa demana una frase i crida a una funció per a que la codifiqui i retorni la seva longitud:

- En el cas dels tuples per paràmetre cal anar amb compte, ja que el C permet passar-les per valor (fa una còpia del contingut a la pila). Si les dades estructurades ocupen molt d'espai serà interessant passar-les per referència. Quan es passen per referència l'accés als camps del paràmetre és farà amb l'operador '->', ja que es tracta d'un punter a una estructura;

ex 3.13: El següent exemple mostra el pas de paràmetres de tuples tant per valor (només lectura) com per referència (lectura/escriptura):


Subpunt anterior Subpunt posterior Punt precedent Titol Contingut