Anda di halaman 1dari 12

Estructura de datos: Los Punteros

El problema

En el caso donde necesito retornar varias variable como lo hago?

El ejemplo

Escribir una funcin que toma un numero de minutos y que permite retornar el numero de horas con el numero de minutos correspondiente. Es decir: Si enviamos 90 como parmetro debe retornar 1 y 30 Si enviamos 60 como parmetro debe retornar 1 y 00 Si enviamos 45 como parmetro debe retornar 0 y 45

La memoria: Un tema de direccin


Direccin
.

Valor

Se lee por linea

Todos los valores son Enteros, UN solo entero

Direccin de una variable?

Es posible obtener el valor de una variable:


printf("El valor de la variable edad es: %i", edad);

Pero tambin, se puede obtener la direccin de esta misma variable:


printf("La direccin de la variable edad es: %p", &edad);

Entonces, para obtener la direccin de una variable ocupamos el signo & antes del nombre de la variable.

Los punteros

Definicin: Un puntero es una variable que contiene una direccin de memoria Para crear una variable de tipo puntero, e inicializarla:
int *mi_puntero = NULL;

Siempre ocupamos la palabra clave NULL para inicializar los punteros, significa que todava no contiene nada. Ocupamos el signo * para decir que la variable contiene una direccin de memoria y No un valor.

Ocupar los punteros

Como se obtiene la direccin de memoria de una variable? Entonces, podemos dar esa direccin a un puntero, si el puntero contiene una direccin:
mi_puntero = &edad;

Y para acceder al valor apuntado por un puntero, ocupamos el mismo signo *:


printf (El valor apuntado por el puntero es %i, *mi_puntero);

Lo que pasa en la memoria


Direccin

Valor

puntero_en_edad edad

Resumen

En una variable como la variable edad:


edad significa El valor de la variable edad &edad significa La direccin de la variable edad

En un puntero como el puntero puntero_en_edad:


puntero_en_edad significa El valor de puntero_en_edad, que es una direccin de memoria. '*puntero_en_edad significa El valor de la variable que esta en la direccin contenida en puntero_en_edad

Cuidado con los asteriscos

Cuando se declara un puntero:


int *mi_puntero = NULL;

el asterisco indica que estamos declarando un puntero, y no una simple variable. Cuando ocupamos un puntero como en:
printf (El valor apuntado por el puntero es %i, *mi_puntero);

el * significa El valor de la variable contenida en la direccin apuntada por el puntero

Ejercicio

Escribir un programa que imprima en el terminal:


Un rut (con una variable rut) La direccin de la variable rut

Y que despus hace lo mismo pero con un puntero puntero_en_rut

Pasar un puntero a una funcin

Una funcin que permite triplicar un valor gracias a un puntero. El prototipo:


void triplicarIntPuntero (int *putero_en_num);

Eso permite modificar varias variables en una misma funcin Para llamar a esa funcion
triplicarIntPuntero (&un_numero);

Anda mungkin juga menyukai