Cuando una funcin debe modificar el valor del parmetro Y devolver este valor modificado a la funcin llamadora, que puede ser el programa principal, se ha de utilizar el paso de parmetros por direccin, donde se usan punteros. 1.3.8 Punteros Un puntero es una variable especial que almacena la direccin de memoria de otra variable el mismo tipo de dato de otra variable a la que apunta el puntero. 1.3.9 Definicin de uso de punteros Como cualquier tipo de variable, un puntero debe haber sido definido antes de que este pueda ser utilizado. Por ejemplo: int * ptr; ptr Es el nombre del puntero * significa que ptr es un puntero int ptr puede ser utilizado para apuntar a variables de tipo entero. 1.3.10 Inicializacin de punteros y una introduccin a los lvalues y rvalues int c; c es una variable de tipo int (entero) c=3; c tiene un rvalue = 3 int * ptr; ptr es un puntero que va a apuntar a una variable de tipo int (entero) ptr= &c; ptr almacena la direccin de la variable c o el lvalue de c rvalue valor real de la variable lvalue valor de la localidad de la variable a) DIAGRAMA DE BLOQUE DE DIRECIONES Ptr = &c lvalue = 5000 rvalue =2000 c=3 o Lvalue = 2000 o Rvalue = 3 b) MAPA DE MEMORIA DIRECCIONES VARIABLES 1000 2000 3000 4000 5000 6000 7000
int c =3; int * ptr = &c;
1.3.11 El operador de indireccin *
c=3 ptr = 2000
El operador de indireccin *en un puntero permite acceder al
contenido de lo que apunta dicho puntero y modificar ese contenido (manipular la variable que apunta el puntero). 1.3.12 El operador de direccin & El operador de direccin& permite almacenar la direccin de memoria de una variable en un puntero. Mapa de memoria variables Int a=10;