hola

Páginas: 13 (3020 palabras) Publicado: 29 de octubre de 2014
Notas elaboradas por
M. en C. Georgina Eslava García

UNIDAD IV:
ESTRUCTURAS DINÁMICAS DE ALMACENAMIENTO
.

4.1 Apuntadores
El uso de los punteros es crítico para la creación de las estructuras dinámicas de almacenamiento.
Los punteros son también una de las herramientas más peligrosas de manejar la memoria, por
ejemplo, usando punteros sin inicializar o incontrolados se puede provocarla caída del sistema.
Quizá peor, los punteros son fáciles de usar incorrectamente y provocar errores que son difíciles de
encontrar.
Un puntero es una variable que contiene una dirección de memoria. Normalmente esta dirección es
una posición de otra variable en la memoria. Si una variable contiene la dirección de otra variable,
entonces se dice que la primera variable apunta a la segunda.Si una variable va a contener un puntero, entonces se debe declarar como tal. El formato general
para la declaración de una variable puntero es:
tipo *Nombre_de_variable;
donde tipo puede ser cualquier tipo base en C y nombre_de_variable es el nombre de la variable
puntero. El tipo base del puntero define qué tipo de variables puede apuntar el puntero. Por ejemplo,
estas sentencias declaranpunteros a enteros y caracteres:
char *p;
int *temp, *start;
Existen dos operadores especiales de puntero: * y &. El & es un operador monario que devuelve la
dirección de memoria de su operando. Por ejemplo,
int *cont_dir;
int cot;
cont_dir = &cont;
pone la dirección de memoria de la variable cont en cont_dir. Esta dirección es una posición interna
de la computadora de la variable. Ladirección no tiene que hacer nada con el valor de cont. Se
puede recordar el funcionamiento de & como devolviendo “la dirección de” la variable a la que
precede. Por tanto, se puede leer la sentencia de asignación como que “cont_dir” recibe a dirección
de cont.
Para entender esta asignación más claramente, supongamos que la variable cont está situada en la
dirección 2000. Después de la asignacióncont_dir tendrá eI valor 2000.

1

Notas elaboradas por
M. en C. Georgina Eslava García
El segundo operador, * , es el complemento de &. Es un operador monario que devuelve el valor de
la variable situada en la dirección que sigue. Por ejemplo, si requerimos el valor contenido en la
dirección de memoria de la variable cont que está siendo apuntada por cont_dir entonces:
val =*cont_dir;pondrá el valor de cont en val. En C, el signo de multiplicación y el de “en la dirección” es el mismo.
Al escribir los programas, tener en cuenta que estos operadores no tienen relación. & y * tienen una
precedencia más alta que el resto de operadores aritméticos excepto el menos notorio, que están
igualados. Programa que usa dos sentencias de asignación dando a imprimir el número 100 en lapantalla:
main ()
{
int *cont_dir, cont, val;
cont =100;
cont__dir = &cont; /* coge la dirección del cantador */
val= *cont_dir /*coge el valor de esa dirección */
printf (“%d,val); /*visualiza 100 */
}

La importancia del tipo base
Se puede asignar a val el valor de cont indirectamente usando un puntero a cont. El tipo base del
puntero determina el tipo de datos que el compiladorasumirá que apunta el puntero. En este caso,
como cont_dir es un puntero entero.
El %p especifica que se visualizará una dirección de puntero.
Si el puntero es de tipo entero apuntará a una variable o espacio de memoria que almacene enteros,
pero en el caso que el puntero sea definido de tipo flotante entonces apuntará a variables o
espacios de memoria que almacenen flotantes. Si se crea unpuntero de tipo entero y este por error
o desconocimiento a punta a un punto flotante el comportamiento será inesperado. Como C permite
asignar cualquier dirección a una variable de puntero, el siguiente fragmento de código compilará,
pero es incorrecto y solo mostrará sólo un mensaje de aviso:
/*este programa no funcionara correctamente*/
main( )
{
flota x=10.1 y;
int *p1;
p1=&x;

2...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • hola hola hola hola
  • hola hola hola hola hola
  • hola hola hhola hola y hola
  • hola hola hola
  • Hola Hola Hola
  • Hola Hola Hola
  • hola hola hola
  • Hola hola

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS