Los punteros son variables que solamente contienen direcciones de memoria de otras variables. Existen dos operadores especiales para manejar punteros:
- & devuelve la dirección de memoria de una variable
- * devuelve el valor guardado en una dirección de memoria
Para declarar un puntero:
tipo_de_dato *nombre;
Para asignar la dirección de memoria de la variable (var) al puntero (p):
p = &var;
Para asignar el valor guardado en la dirección del puntero (p) a la variable (var):
var=*p;
Las funciones pueden recibir parámetros de dos formas:
- Por valor: se crea una copia de la variable
- Por referencia: se pasa un puntero con la dirección de memoria
El pase de parámetros por referencia es más efectivo porque ahorra espacio de memoria y además permite modificar los valores de todos los parámetros sin necesidad de usar valores de retorno.
Ejemplo:
Realizar un programa que sume dos números utilizando una función con paso de parámetros por referencia (punteros) y que no tenga valor de retorno.
Código:
La variable local (res) es modificada desde otra función que sobrescribe un valor en su dirección de memoria dada por el puntero (*r) .
Ejecución del programa: