Anuncios

Bienvenidos sean a este post, hoy veremos dos apuntadores particulares.

Anuncios
Anuncios

Como vimos en el post anterior un apuntador tiene asignado la direccion de la memoria donde la variable almacena la informacion, y esta variable siempre deberia tener un valor y nunca uno de tipo desconocido, pero habra circunstancias donde esto sucedera o no podremos definir correctamente su direccion de memoria, para estos casos dispondremos de un apuntador especial llamado NULL, el valor de este es definido en el archivo stddef.h y representa el valor de 0 y se lo define de la siguiente manera:

#define NULL ((void*)0)
Anuncios

En este caso usamos a define para definir una constante que se llamara NULL pero su valor sera un apuntador de tipo void, y cuando hablamos de tipos de datos en este post lo mencionamos y dijimos que no devuelve ningun tipo de valor, por lo tanto no devolvera ningun tipo y tendra el valor de 0.

Anuncios
Anuncios

Vamos a hablar sobre el apuntador void, en este caso es utilizado para cuando no tenemos la certeza del tipo de dato para el apuntador, lo veremos principalmente en las funciones de las librerias de C, este tipo de apuntador se lo denomina como generico, es decir que es un tipo desconocido al momento de la declaracion, con esto comentado podemos utilizar este tipo de dato para nuestros apuntadores pero al utilizarlo de esta forma al momento de usar al apuntador debemos «castear» el tipo de dato que manipulara, por ejemplo podemos tener un apuntador de este tipo:

void* a_valores = NULL;
Anuncios

Este apuntador no tiene nungun tipo asignado asi como tampoco apuntara a ninguna direccion de memoria, ahora tomemos este apuntador y hagamos esto:

a_valores = &valor;
Anuncios

En este caso le asignamos la direcion de memoria de la variable valor pero todavia no trabajamos con ningun tipo, veamos el siguiente caso:

int v = (int) *a_valor;
Anuncios
Anuncios

De esta forma podemos tomar el valor donde estamos apuntando y por medio del casteo asignarlo a esta variable, si volvemos al momento de definicion de NULL, de manera predeterminada sera 0 y como este valor es un entero sera el tipo que casteara el apuntador, con lo cual podemos decir que apunta a la direccion 0 y sera identificado como NULL, como esta direccion no posee ningun valor nos resulta util para establecer un apuntador a un valor conocido pero para un destino intranscendente e inutil, por ejemplo podemos utilizarlo de esta manera:

int* a_valores = NULL;
Anuncios

En este caso definimos un apuntador de tipo int pero sin ningun valor dado que le pasamos el NULL, ahora hagamos esto:

a_valores = &valor;
Anuncios

En este caso hicimos lo habitual como es asignar una direcion de memoria al apuntador, pero vamos a suponer que no necesitamos que ese apuntador vaya a esa direccion de memoria, haremos lo siguiente:

a_valores = NULL;
Anuncios

Esto hara que se resetee al apuntador y dejara de apuntar a la direccion de memoria, esto lo veremos mas util para cuando trabajamos con la comparacion de apuntadores de lo cual hablaremos en el proximo post.

Anuncios

En resumen, hoy hemos visto a NULL. que es, como se define, como el tipo void* nos puede ayudar con algunos de los apuntadores, y como gracias a este podemos crear al valor NULL, espero les haya sido util 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