Documente Academic
Documente Profesional
Documente Cultură
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
declarada sea 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 la aplicació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, el programa 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:
La constante NULL .
Como medida preventiva, el lenguaje C ofrece una constante
que denota el puntero nulo, 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
denomina NULL . 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álido será detectado y se producirá un error. Esto se
haría mediante una declaración de la forma
Tipo * puntero = NULL;
Alias .
Las expresiones variable y *puntero de la sección anterior
son equivalentes. Se dice entonces que p es un alias de
variable. Nada impide crear múltiples alias de una variable,
que podrían utilizarse desde distintos lugares de un
programa:
float valor;
float *alias_1, *alias_2, *alias_3;
alias_1 = alias_2 = alias_3 = &valor;
El uso de alias es potencialmente peligroso, pues permite
modificar el valor de una variable empleando cualquiera de
esos alias.