Punteros esime
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.
Los punteros permiten simular el paso por referencia, crear y manipular estructuras dinámicas de datos, tales como listas encadenadas, pilas, colas y árboles. Generalmente las variables contienen valoresespecíficos. Los punteros son variables pero en vez de contener un valor especifico, contienen las direcciones de las variables a las que apuntan. Para obtener o modificar el valor de la variable a la que apuntan se utiliza el operador de indirección. Los punteros, al ser variables deben ser declaradas como punteros antes de ser utilizadas.
Al hablar de punteros es inevitablemente hablar de lamemoria, a efectos del programador, la memoria RAM puede suponerse como una sucesión de contenedores capaces de albergar datos (podríamos imaginarlos como una sucesión de vagones de tren). Estos contenedores tienen dos atributos: dirección y contenido.
Dirección: un identificativo que sirve para distinguirlos. Para esto es suficiente un número entero positivo progresivamente creciente desde laposición más baja, la dirección 0 (que correspondería al primer vagón), a la posición más alta XXXXX (que correspondería al último). Es tradición informática que estos números se representen en hexadecimal, de forma que las direcciones se suelen representar como xxxxxh en los textos de programación.
Los ordenadores modernos utilizan un modelo de memoria denominado "plano" ("Flat memory model") en elcual la memoria se presenta como un todo continuo desde el punto más bajo hasta el máximo soportado por el hardware (máximo que puede direccionar). En la práctica la RAM instalada en un equipo es siempre inferior a este valor máximo permitido por su arquitectura, pero el mecanismo de memoria virtual puede simular la existencia de RAM adicional mientras exista espacio en disco.
Contenido: elcontenido correspondiente a cada dirección está siempre en binario (la memoria física solo puede contener este tipo de variables, y la capacidad de cada vagón depende de la plataforma. En la arquitectura PC, el espacio señalado por cada dirección puede contener un byte (octeto). Como esto es muy poco (solo los tipos char caben en un octeto) para representar datos se utilizan vagones sucesivos ennúmero suficiente. Por ejemplo, si ordenamos al compilador que traiga un dato que está en la dirección xxxxh y es un int. El compilador ya sabe que tiene que traer el contenido de esa celda y las tres siguientes.
Al hablar de la "dirección de un objeto" nos referimos siempre a la dirección donde comienza su almacenamiento. Por contra, la expresión "dirección de memoria" se refiere a un vagónespecífico.
Los punteros son un tipo de dato que sirven para almacenar direcciones de memoria. También son un tipo especial de datos C++ cuyo fin específico es almacenar direcciones de objetos. Comparten las características de las variables. Es decir: tienen un valor (tienen Rvalue); pueden ser asignados (tienen Lvalue); tienen un álgebra específica (se pueden realizar con ellos determinadasoperaciones); pueden ser almacenados en matrices; pasados como parámetros a funciones y devueltos por estas. Comprenden dos categorías principales: punteros-a-objeto y punteros-a-función según el tipo de objeto señalado. Ambas categorías comparten ciertas operaciones, pero tienen uso, propiedades y reglas de manipulación distintas.
El tratamiento de punteros en C++ utiliza su propio vocabulario con el que esaconsejable familiarizarse desde el principio. En general decimos coloquialmente que un puntero "apunta" o "señala" a un objeto determinado cuando su valor (del puntero) es la dirección del objeto (dirección de memoria donde comienza su almacenamiento). El objeto señalado por el puntero se denomina referente. Por esta razón también se dice que el puntero "referencia" al objeto. El operador...
Regístrate para leer el documento completo.