Punteros

Páginas: 5 (1198 palabras) Publicado: 28 de febrero de 2013
Ingeniería Técnica Industrial Fundamentos de Informática Tema 6. Punteros

TEMA 6. PUNTEROS
Es una variable estática que, en vez de contener valores de datos, contiene valores que representan direcciones de memoria de variables.
Memoria Principal Vble puntero, x Vble entera, y

D104 Pos: D217

35 Pos: D104

y

… 35 …

D104

x
Contenido de la variable puntero x Dirección enMemoria de la variable puntero x. Contenido de la variable entera y (variable apuntada por x)

D104 …

D217

Dirección en Memoria de la variable entera y (variable apuntada por x)

PUNTERO Variable que contiene la DIRECCIÓN de memoria en la que se encuentra almacenada otra variable. La sintaxis general para declarar una variable tipo puntero es:
tipo *nombre_puntero;

donde tipo es el tipo devariables a la que apuntará el puntero.
int *p;

6.1 Los operadores punteros Existen dos operadores especiales de punteros: * y &. • El operador & (operador dirección), aplicado sobre el nombre de una variable, devuelve su dirección de memoria. • El operador * (operador indirección) aplicado sobre una variable de tipo puntero permite acceder al dato al que apunta, es decir, al valor de lavariable situada en esa dirección de memoria.
Página 1 de 6

Ingeniería Técnica Industrial Fundamentos de Informática Tema 6. Punteros

Ejemplo1:
int *p, b, x = 1250; p = &x; b = *p; /* b = x; */ Nombre de la variable b x Dirección de memoria 0x10004 0x10005 0x10006 0x10007 0x10008 0x10009 0x1000A 0x1000B Variable en memoria 1250 1250 *p 0x10006

p

Ejemplo2:
int cuenta = 125; int *p; intx;
Memoria Principal

p = &cuenta;

x = *p;

Memoria Principal

Memoria Principal





cuenta

cuenta

125 …

D100

125 …

D100

cuenta

125 …



D100

p …

D150

p

D100 …

D150

p

D100 …

D150

x …

D175

x …

D175

x

125 …

D175

Página 2 de 6

Ingeniería Técnica Industrial Fundamentos de Informática Tema 6. Punteros6.2 Asignación de punteros. Respecto a la comparación y a la asignación, los punteros se ajustan a las mismas reglas que cualquier otra variable en C: • Un puntero puede utilizarse a la derecha de una declaración de asignación para asignar su valor a otro puntero. • Podemos comparar dos punteros en una expresión relacional.
#include main() { int i=100, *p1, *p2; p1 = &i; p2 = p1; if (p1==p2) /*estamos comparando dos punteros */ printf(“p1 apunta a la misma dirección de memoria que p2”); *p1 = *p1 + 2; /* El * tiene más prioridad que el + */ printf (“El valor de *p2 es %d\n”, *p2); (*p2)++; /* ante la duda de prioridades usamos parentesis */ printf(“El valor de *p1 es %d\n”, *p1”); i--; prinft(“El valor de i es %d\n”, i); }

A un puntero se le puede asignar: El valor de otro puntero, delmismo tipo. La dirección de memoria de una variable cuyo tipo coincida en el tipo_base del puntero. Ejemplo: int x=15, p1 = &x; p2 = p1;

*p1=NULL, *p2=NULL;
// Se le asigna la dirección de memoria de // Se le asigna el valor de

x

p1

Los dos apuntan a la misma variable
Página 3 de 6

Ingeniería Técnica Industrial Fundamentos de Informática Tema 6. Punteros

6.3 Inicialización depunteros Al igual que otras variables, C no inicializa los punteros cuando se declaran y es preciso inicializarlos antes de su uso. TODO PUNTERO DEBE INICIALIZARSE, ya que en caso contrario tras ser declarado apuntaría a cualquier sitio (PELIGROSO) al usarlo puede p.ej. modificar una parte de la memoria reservada a otra variable Si aún no sabemos dónde debe apuntar, se le asignará el valor NULL(nulo) No apunta a ningún sitio en especial. Ejemplo: int *p = NULL;

Las variables tipo puntero deben apuntar al tipo de dato correcto. Si no es así, pueden producirse resultados inesperados. Por ejemplo:
main() { unsigned char a=255; /* 255 en binario es 11111111 (8 bits) */ char *p; /* p es un puntero a un signed char (por defecto) */ /* ¡muestra el valor –1, en vez de 255! */ p = &a; /*...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

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

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS