Clase Punt Eros

download Clase Punt Eros

of 22

  • date post

    14-Aug-2015
  • Category

    Documents

  • view

    20
  • download

    0

Embed Size (px)

Transcript of Clase Punt Eros

Variables Una variable es una porcin de memoria identificada por un nombre. El tipo de dato define su representacin binaria y longitud. Tiene tres valores asociados: Nombre, Contenido y Direccin.

Declaramos: int n=1523, m=121;

Contenido: n 1523 m 1210000000

mValor: 121 01111001

nValor: 1523 00000101 11110011

Direccin: &n C102 &m C100

Direccin: C100

Direccin: C102

Es contenido binario se codifica (bits) de acuerdo al tipo de variable.

Punteros Un puntero es una variable que hace referencia a una direccin de memoria Sintaxis declaracion: Tipo_Dato *nombre_variable_puntero; Ejemplo: int *p; Sintaxis Asignacin de Direccin nombre_puntero=&variable;

Punteros Declaracin Puntero a un Tipo de Datoint* pInt; char* pChar;Con la declaracin , estamos instruyendo al compilador para que sepa que la variable pInt almacenar una direccin de memoria (ser un puntero). Se lleva a cabo mediante el tipo de dato pointer puntero a entero. Esto, le indica al compilador como debe interpretar los bytes ubicados en la direccin en cuestin (en el caso de pInt como Entero y en el caso de pChar como char).

PunterosLos punteros son variables, por lo que se los modela como tales, es decir: cajas contenedoras con un nombre asociado. La diferencia esta en la diagramacin de su contenido, el cual bien podra ser una direccin de memoria ($FA00:4567) pero sera muy confuso trabajarlo. En lugar de ello, se suele representar con flechas que llegan a la direccin de memoria a la cual apuntan.pChar y p apuntan a la misma variable A.

Punteros Un puntero es una variable cuyo contenido es una direccin. Como todas las variable tiene nombre, contenido y direccin. Un puntero apunta a: un dato, un array, un objeto, una funcin, etc.

int n; //declara una variable entera (16 bits / 2 bytes) int *j; // declara un puntero tipo entero (solo almacena direcciones). j //contiene una direccin donde comienza un entero. *j //valor entero almacenado en la direccin apuntada por j (indireccin). n contenido=valor del entero &n direccin del entero en n j contenido=valor de la direccin. *j contenido en la direccin de j.

Representamos int n=40, *j=&n; suponemos que se almacenan:

n en la direccin 0xA010 yLugar: 2 byte donde esta almacenado j j0xA010

j en la direccin 0xF234Lugar: 2 byte donde esta almacenado n Valor *j=n 40

Direccin: &j0xF234

Direccin: j &n 0xA010

int a=1, b=2, *p;

Punterosb p2

Las variables a,b,p estn almacenadas e memoria como: a1

?

Pensamos en p como una flecha. Pero como no se le ha asignado un valor no sabemos a que apunta. Si escribimos p= &a; Esto lo leemos como a p se le asigna la direccin de a y el diagrama sera:

Diagrama nuevo: a1

b2

p

Ahora hacemos la asignacin: b= *p;

Que se lee a la variable b se le asigna el valor a que apunta p, y como p apunta hacia a, b = *p; es equivalente a b = a;

Un programa que ilustra la distincin p = &a, y b =*p es:

#include Lo que se lee en la pantalla es: main() Valor de i : 7 { Localizacin de i : effffb24 int i = 7, *p ; /* variable p de tipo entero */ Valor de i : 7 p = &i; /* p apunta a la direccin de i */ Localizacin de i : effffb24 cout