Fisica

Solo disponible en BuenasTareas
  • Páginas : 70 (17431 palabras )
  • Descarga(s) : 0
  • Publicado : 11 de mayo de 2011
Leer documento completo
Vista previa del texto
Sección 1

Capítulo 1 Punteros:

Definiciones

Qué es un puntero?
Podríamos imaginar un puntero como una flecha que apunta a otra variable, pero esto es sólo para aclararnos a la hora de hacer esquemas. En realidad, dentro del ordenador, una variable puntero no es más que una dirección de memoria, un puntero nos dice dónde se encuentra almacenado el valor de la variable a la que apunta. Sinos quedamos con esta última definición (la de dirección de memoria), nos será más fácil aclararnos cuando trabajemos con punteros a gran escala.

Como ya sabemos, al declarar una variable lo que estamos haciendo es reservar espacio en memoria para esa variable (el tamaño del espacio reservado dependerá del tipo de la variable). Pues bien, al declarar un puntero lo que hacemos es reservarespacio para almacenar una dirección de memoria, no el contenido de la variable.

La siguiente figura muestra tres variables, de tipos char, int y double, y un puntero a cada una de ellas:
|[pic] |
|Figura 5.1: Punteros a variables char, int y double|

Tomemos como ejemplo la variable de tipo char. Está almacenada en la dirección de memoria (fictícia) 100. El contenido de dicha posición (esto es, el contenido de la variable) es el carácter ``a''. Por otro lado, el puntero p1 se encuentra en la dirección 210, y su valor es 100. Como vemos, el contenido de la variable p1 (puntero) es la direcciónde la variable char.

Como se ve en la figura, mientras que el tamaño que ocupan en memoria las variables es distinto (un char ocupa un byte, un double ocupa 8 bytes), el tamaño que ocupan las variables tipo puntero es siempre el mismo: 4 bytes. Esto es lógico: las direcciones de memoria siempre ocupan el mismo tamaño.

Es importante recordar que los tamaños de las variables char, int y doubleaquí especificados son dependientes de la plataforma.
¿Para qué necesito yo un puntero?
Es posible que al abordar un concepto algo más abstracto que los que surgen al aprender un lenguaje de programación, sea difícil imaginar para qué sirve. Al plantearnos esa pregunta, surgen dos respuestas inmediatas:
• para poder usar ``memoria dinámica''.
• para poder usar ``argumentos porreferencia''.

OPERADORES PUNTERO
&
*

OPERACIONES CON PUNTEROS
Se permiten todas las operaciones posibles con direcciones, es decir sumar direccciones o restar direcciones.

Punteros y Arreglos

Hasta ahora la forma de recorrer un arreglo es mediante el índice del mismo.
Un arreglo es un conjunto de datos que se almacenan en direcciones continuas de memoria, por lo tanto si se conoce ladirección del primer elemento, es posible acceder a todos los demás elementos del mismo.

int notas[10]; /*Arreglo de notas de 10 estudiantes*/
int *pnotas; /*Variable puntero al arreglo notas */

|pnotas = ¬as[0]; |pnotas almacena la dirección del primer elemento del arreglo notas |

Si se desea realizar el ingreso de las diez notasutilizando el puntero se puede proceder de la siguiente manera:
|pnotas = ¬as[0]; |pnotas almacena la dirección del primer elemento del arreglo notas |
| | |
|for (i=0; i media entonces
escribir (nota1)
Fin_si

Si nota2 > mediaentonces
escribir (nota2)
Fin_si

Si nota100 > media entonces
escribir (nota100)
Fin_si

Y después de más de 450 líneas de código..... ¡Falta ordenar la lista de calificaciones en orden ascendente!
Después que aprendas a usar arreglos verás cómo se ahorra instrucciones porque es fácil recorrer toda la lista de notas con unas pocas instrucciones. En el caso anterior, cuando el acceso a la...
tracking img