UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

Capítulo 5. Los punteros en C

Los punteros son uno de los aspectos más potentes de la programación en C, pero también uno de los más complejos de dominar. Los punteros permiten manipular la memoria del ordenador de forma eficiente. Dos conceptos son fundamentales para comprender el funcionamiento de los punteros:

  1. El tamaño de todas variables y su posición en memoria.

  2. Todo dato está almacenado a partir de una dirección de memoria. Esta dirección puede ser obtenida y manipulada también como un dato más.

Los punteros son también una de las fuentes de errores más frecuente. Dado que se manipula la memoria directamente y el compilador apenas realiza comprobaciones de tipos, el diseño de programas con punteros requiere una meticulosidad muy elevada que debe ir acompañada de una dosis idéntica de paciencia. Programar eficientemente usando punteros se adquiere tras escribir muchas líneas de código pero requiere una práctica sostenida.

Te recomendamos que leas este documento con tu entorno de desarrollo preparado para probar pequeños fragmentos de código y programas. Debes compilarlos y ejecutarlos para comprobar que se comportan como esperas.

5.1. Todo dato tiene una dirección en memoria

Todos los datos se almacenan a partir de una dirección de memoria y utilizando tantos bytes como sea necesario. Por ejemplo, considera la siguiente definición de datos y su correspondiente representación en memoria a partir de la dirección 100.

Asumiendo que int y float ocupan 4 bytes cada uno, y char ocupa 1 byte, si d1 está almacenada a partir de la posición 100, entonces su campo n1 tiene esa misma dirección, el campo n2 está en la posición 104 y el campo st está almacenado a partir de la posición 108.