PUNTEROS

Páginas: 17 (4172 palabras) Publicado: 14 de septiembre de 2015
PUNTEROS
Un puntero es una variable que contiene la dirección de una posición de memoria. Esa posición de memoria es la dirección de comienzo de una variable; la variable puede ser dinámica.
Esta es la esencia del concepto: una dirección de memoria, esto es, la dirección de un determinado byte. Esto puede suponer una cierta dificultad conceptual cuando encontramos declaraciones de puntero comolas siguientes:
int * p;
float * q;
double * r;
¿Qué tiene que ver un int, o un float, o un double, con un puntero? Todas las direcciones de memoria son iguales, luego puede parecer sobrante asociar un tipo al puntero p. Sin embargo, tiene sentido. Dada una dirección de memoria, ¿cómo se pude saber la extensión de la variable que comienza en ella? ¿Cómo saber el tipo de esa variable?Verdaderamente, es imprescindible asociar un tipo a los punteros: sólo así podremos interpretar correctamente la variable cuya dirección contienen. 

 Declaración de punteros. 
En general, dado un Tipo atómico, los punteros de ese tipo se declaran en la forma
Tipo * puntero_de_tipo;
esto es: basta intercalar un asterisco entre el nombre del tipo y el nombre de la variable para hacer que la variable declaradasea un puntero de algun objeto del tipo Tipo. 

 Punteros no iniciados. 
En el momento de su declaración, el puntero contiene un valor que no está definido, y no es otro que la trama de bits que haya en memoria en la zona reservada para el puntero por el compilador. Esta trama es ciertamente aleatoria e imprevisible, y puede muy bien ser la dirección de una zona de memoria perteneciente a laaplicación, o más probablemente se tratará de una zona de memoria no perteneciente a aplicación. Si interpretamos la (¡inexistente¡) variable señalada por el puntero, el valor obtenido es impredecible, y lo más probable es que su codificación no se ajuste al tipo de variable asociado al puntero. Si intentamos escribir y la "variable" señalada no reside en el espacio de memoria de nuestra aplicación, elprograma se detendrá de inmediato, por haber intentado acceder a una posición que no le pertenece. Si la "variable" señalada reside en la zona de memoria de nuestra aplicación, podremos ciertamente escribir... y muy posiblemente destruiremos información de una variable realmente existente. Esta destrucción de información se notará tarde o temprano, sin que sea posible determinar fácilmente por quése ha producido. Consiguientemente: 

Antes de emplear un puntero para obtener el valor de una variable o para dar valor a la variable señalada por el puntero, es imprescindible almacenar en el puntero la dirección de la zona de memoria deseada.

¿Cómo se le da valor a un puntero? Mediante una operación de asignación. Para obtener la dirección de la zona de memoria que debe señalar el puntero sepuede emplear el operador ampersand (&) o bien cualquier función que proporcione un puntero de tipo compatible con el nuestro. En este sentido, hay que tener en cuenta que C aplica a los punteros las mismas reglas de comprobación estricta de tipos que se aplican a todas las demás variables. 

 La constante NULL. 
Como medida preventiva, el lenguaje C ofrece una constante que denota el punteronulo, esto es, una dirección tal que todo intento de acceder a la variable que comienza en esta dirección (tanto para leer como para escribir) se detecta y supone la parada inmediata del programa. Esta constante se denominaNULL. Es buena práctica de programación asignar el valor NULL a los punteros recién declarados. De esta manera, el intento de utilizar esos punteros sin darles antes un valor válidoserá detectado y se producirá un error. Esto se haría mediante una declaración de la forma
Tipo * puntero = NULL;


 Operador &. El operador & proporciona la dirección de su operando, esto es, del objeto que se le proporciona como argumento. En general, su aplicación tendrá la forma siguiente:
Tipo variable;
Tipo * puntero;
puntero = &variable;
Obsérvese la necesidad de respetar los tipos en...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Punteros
  • Puntero
  • Punteros
  • Punteros
  • Punteros
  • Punteros
  • Los Punteros Laser
  • el puntero

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS