Que Es Un Puntero

Páginas: 56 (13983 palabras) Publicado: 2 de noviembre de 2015
Que es un puntero?Un puntero es un tipo especial de variable, que almacena el valor de una direccion de memoria, esta direccion puede ser la de una variable individual, pero mas frecuentemente sera la de un elemento de un array, una estructura u objeto de una clase. Los punteros, al igual que una variable comun, pertenecen a un tipo (type), se dice que un puntero 'apunta a' ese tipo al quepertenece. Ejemplos:
int* pint;            //Declara un puntero a enterochar* pchar;          //Puntero a charfecha* pfecha;        //Puntero a objeto de clase 'fecha'
Independientemente del tamaño (sizeof) del objeto apuntado, el valor almacenado por el puntero sera el de una unica direccion de memoria. En sentido estricto un puntero no puede almacenar la direccion de memoria de 'un array'(completo), sino la de un elemento de un array, y por este motivo no existen diferencias sintacticas entre punteros a elementos individuales y punteros a arrays. La declaracion de un puntero a char y otro a array de char es igual.
Al definir variables o arrays hemos visto que el tipo (type) modifica la cantidad de bytes que se usaran para almacenar tales elementos, asi un elemento de tipo 'char' utiliza1 byte, y un entero 2 o 4. No ocurre lo mismo con los punteros, el tipo no influye en la cantidad de bytes asociados al puntero, pues todas las direcciones de memoria se pueden expresar con solo 2 bytes (o 4 si es una direccion de otro segmento).
Veamos los efectos de un codigo como el siguiente, en la zona de almancenamiento de datos:
char cad[] = "aaaa";
char * p;
p =cad;           //Puntero 'p' apunta a 'cad'

El puntero esta en la direccion 0xffee pero el valor que hay en esa localidad de memoria es otra direccion, los bytes "F0 FF" indican que el puntero apunta a FFF0, donde comienza la cadena de caracteres 'cad' con el contenido 'aaaa' mas el cero de fin de cadena.En las lineas de codigo no hemos indicado a que caracter del array apunta el puntero, pero esa notacion es equivalente a:
p= &cad[0];
que indica de modo mas explicito que se trata de la direccion del primer elemento de ese array de caracteres. El juego con las direcciones puede ilustrarse tambien del siguiente modo:
ffee     F0      <----- El puntero ocupa dos bytes para representar la direccion FFF0, direccion a la que 'apunta'.ffef     FF      <-----fff0     61     <------ cad[0]. .Primer char delarray de caracteres, direccion apuntada por el punterofff1     61     <------ cad[1]fff2     61    <------ cad[2]  fff3     61    <------ cad[3]fff4      0   <------ cad[4]   Fin del array, caracter ascii = 0 de fin de cadena
Puesto que un puntero tiene como valor una direccion de memoria, es logico que al llamar a funciones de impresion con un puntero como argumento, la salida enpantalla sea la de una direccion de memoria. Para este tipo de pruebas es interesante usar la libreria iostream.h de C++, pues no obliga a especificar el formato (como hace printf ). Para un puntero 'p' la salida en pantalla sera algo similar a lo siguiente:
cout<<p;           //sale: 0x8f82fff0;printf("%p",p)     //sale: FFF0
En este caso se trata de un puntero que almacena en 2 bytes unadireccion de memoria, la cual es FFF0. Porque razon la impresion con 'cout' nos da 4 bytes? Porque agrega 2 bytes (8f y 82) para indicar el 'segmento' donde se encuentra esa direccion. Se trata en todo caso de una misma localidad de memoria, con distinto formato de presentacion en pantalla.
La salida en pantalla de un puntero a char es diferente, pues es tratado como apuntando a una cadena decaracteres, en tal caso no sale en pantalla una direccion de memoria, sino un conjunto de caracteres hasta encontrar el '\0'.
Un puntero puede almacenar la direccion de ("apuntar a") muy diferentes entidades: una variable, un objeto, una funcion, un miembro de clase, otro puntero, o un array de cada uno de estos tipos de elementos, tambien puede contener un valor que indique que no apunta...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Punteros
  • Puntero
  • Punteros
  • Punteros
  • Punteros
  • Punteros
  • Los Punteros Laser
  • el puntero

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS