punteros

Páginas: 5 (1124 palabras) Publicado: 25 de agosto de 2014
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.

Vble puntero, x

Vble entera, y



Memoria Principal

D104


D104

Pos: D104
Contenido de la
variable entera y
(variable apuntada
por x)Contenido de la
variable puntero x
Dirección en
Memoria de la
variable puntero x.

35

D217



Pos: D217

35

y

x

D104

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 de variables 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 datoal que apunta, es decir, al
valor de la variable 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

Dirección de
memoria
0x10004
0x10005
0x10006
0x10007
0x10008
0x10009
0x1000A
0x1000B

b
x

p

Variable enmemoria
1250
1250
*p
0x10006

Ejemplo2:

D100

x

D150

p

D100

D175

x

125



D100





125

D150









x



p

D100

cuenta

125

D175

p

Memoria Principal



cuenta



D100

D150

125

x = *p;

Memoria Principal

Memoria Principal

cuenta

p = &cuenta;

D175



int cuenta = 125;
int *p;
intx;

Página 2 de 6

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

6.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 dospunteros 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, del mismo 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 lamisma variable
Página 3 de 6

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

6.3 Inicialización de punteros
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 usarlopuede 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...
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