Anuncios

Bienvenidos sean a este post, hoy veremos el primero de muchos temas complejos.

Anuncios

En el post anterior mencionamos que los apuntadores son una forma de direccionamiento indirecto porque en lugar de apuntar a una direccion de memoria directa lo hacemos a traves de una variable que posee la direccion de memoria, veamos algunos aspectos basicos de estos:

  • Podemos declarar una variable del tipo del apuntador
  • Le podemos asignar una variable ya declarada a este
  • Podemos ejecutar un numero limitado de operaciones en un apuntador
Anuncios

En este caso tanto apuntadores como variables son similares porque podemos cambiar valores en ambos pero los apuntadores no lo hacen directamente como ocurre en las variables, aunque los apuntadores deberian apuntar solamente a una variable que ya exista, otra cosa que debemos tener en cuenta es su nomenclatura para identificarlas correctamente en el codigo, antes de comentar esto vamos a ver como es su sintaxis:

tipo_dato* nombre;
Anuncios

Como pueden ver es muy similar a definir una variable pero con la anotacion del asterisco (*) el cual transformara a la variable en un apuntador, el otro tema es la nomenclatura y este se puede identificar de dos formas, si lo hacemos en castellano siempre van con la letra a o con ap por delante, veamos un par de ejemplos:

int* aValores;
Anuncios
int* a_valores;
Anuncios
int* apValores;
Anuncios
int* ap_valores;
Anuncios

Pero en ingles se trabaja de forma distinta porque no solamente sera distinta la letra a utilizar, en ingles se llama pointer, sino que tambien poseen otras nomenclaturas, veamos la primera:

int* pValores;
Anuncios
int* ptrValores;
Anuncios

Estas son las dos formas de prefijo para la nomenclatura en ingles, veamos otro ejemplo pero para los sufijos en ingles:

int* valoresP;
Anuncios
int* valoresPtr
Anuncios

Es simplemente nomenclatura no necesariamente deben respetarlo pero es una buena practica respetarlo, especialmente si otras personas trabajan con sus codigos, en castellano he visto mayoritariamente estos tipo de nomenclaturas pero pueden existir otras mas, siempre vean como se declaro para descubrir si es un apuntador o no, por ultimo vamos a ver como se asigna un valor a un apuntador:

int valores = 10;
int* aValores = &valores;
Anuncios
int valores = 10;
int* aValores;
aValores = &valores;
Anuncios

Podemos asignarlo al momento de definirlo o despues pero siempre sera con el operador de referencia llamado ampersand (&) porque este operador siempre devuelve la direccion de memoria de la variable que le procede, para terminar con esto vamos a crear un nuevo ejemplo y para eso haremos un nuevo archivo que llamaremos ejemplo10.c y le agregaremos el siguiente codigo:

ejemplo10.c

#include <stdio.h>

int main()
{
        int valores = 10;
        int* a_valores = &valores;

        printf("valores = %i\n", valores);
        printf("&valores = %x\n", &valores);
        printf("*valores = %i\n", *a_valores);

        return 0;
}
Anuncios
Anuncios

Aqui tenemos un pequeño ejemplo practico para verlo en accion, para ello primero definimos la variable llamada valores, luego crearemos un apuntador el cual tendra al direccion de la variable anterior, hasta aqui todo facil, lo siguiente sera mostrar los tres valores posibles, el primero sera el de la variable, el segundo sera la direccion de memoria, para este usamos un modificador de tipo hexadecimal para mostrar el valor correctamente, y en el tercer caso mostraremos el valor del apuntador, observen varios detalles, en el segundo caso usamos la misma forma que lo apuntamos, y en el ultimo caso volvemos a usar la notacion de apuntador para indicar justamente esto, compilemos y veamos su salida:

tinchicus@dbn001vrt:~/lenguajes/C$ ./prog/ejemplo10 
valores = 10
&valores = b2ae52e4
*valores = 10
tinchicus@dbn001vrt:~/lenguajes/C$
Anuncios
Nota: 
El segundo valor puede variar con respecto a ustedes
Anuncios

Como pueden ver tanto la variable como el apuntador poseen el mismo valor, por el momento se estaran preguntando cual es la ventaja de trabajar de esta forma, no se preocupen en los proximos posts iremos viendo el porque y cuales son sus beneficios de trabajar de esta forma.

Anuncios

En resumen, hoy hemos visto apuntadores, que son, como se definen, como se les asigna un valor, algunas particularidades y detalles basicos para comenzar, por ultimo un ejemplo para verlo en accion, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50