Você está na página 1de 4

UNIVERSIDAD AUTÓNOMA METROPOLITANA

UNIDAD CUAJIMALPA

Laboratorio
ESTRUCTURAS DE DATOS
2018-P

Práctica No. 1
Apuntadores

Nombre:
A. paterno A. materno Nombre(s)
Fecha:

Al término de la práctica el alumno será capaz de:

 Definir qué es un apuntador


 Hacer asignaciones a apuntadores
 Obtener datos a través de apuntadores
 Hacer asignaciones a variables a través de apuntadores
 Diferenciar las operaciones permitidas con apuntadores
Preguntas

1.- ¿Qué son los apuntadores?


2.- ¿Cómo se declara un apuntador?
3.- ¿Qué diferencia existe entre los operadores & y *?
4.- ¿Qué valor tienen los apuntadores cuando no se inicializan?

Ejercicios

1.- Completar el siguiente programa. ¿Qué valor resulta para la variable a en el


programa siguiente?

// ejercicio 1 de apuntadores
#include <iostream.h>

main()
{
int a;
int *ptr;

ptr = &a;
*ptr = 24;

Aqui imprimir lo que contiene a

Aquí imprimir el contenido del apuntador ptr

Aquí imprimir lo que apunta ptr

return 0;
}

2.- Completar el siguiente programa ¿Qué valor resulta para las variables i, j ?

// ejercicio 2 de apuntadores
#include <iostream.h>

main()
{
int *a, *b, *c;
int i, j;

// Hacer que a y b se carguen con la dirección de i

// Hacer que c apunte a j

// poner un 4 en donde apunta b

// poner un 3 en donde apunta c

*a = 2**b+*c;

// que valores quedaron en las variables i y j?


return 0;
}

3.- Completar el siguiente programa:


// Practica1 Ejercicio 3.cpp

#include <iostream.h>
main()
{
int *pointer_int, a, x=7;
float *pointer_float, b, y= 4.0;

// el apuntador a entero se carga con la direccion de x


pointer_int = ;
cout << "el contenido de x es " << . . . << endl;
cout << "la direccion de x es: " << . . . << endl;
cout << "pointer_int contiene: " << . . . << endl;
cout << "pointer_int apunta a: " << . . . << endl;

// el apuntador a float se carga con la direccion de y


pointer_float = ;
cout << "el contenido de y es " << . . . << endl;
cout << "la direccion de y es: " << . . . << endl;
cout << "pointer_float contiene: " << . . . << endl;
cout << "pointer_float apunta a: " << . . . << endl;

// a se carga con lo que apunta pointer_int


a = ;

// b se carga con lo que apunta pointer_float


b= ;

// desplegar a y b
cout<< "a= " << … << endl << "b= " << ;
return 0;
}
4.- Hacer un programa donde se declaren las siguientes variables:

int i=10, j=0, *p,**q;

Escribir la dirección y contenido para cada una de las variables en la tabla 1.

Tabla 1
Variable Dirección Contenido
i
j

Codificar el programa para que:


a) p apunte a la variable i
b) asigne a j lo que apunta p más 1.
c) despliegue cuánto vale j
d) asigne 20 a lo que apunta p.
e) despliegue cuánto vale i
f) **q sea j.
g) Se despliegue **q
h) i = 2 + **q despliegue i

El siguiente programa casi resuelve el ejercicio 4 pero contiene un error que ocasiona
que se "truene". El problema es que un apuntador no está inicializado. Resuelve el
problema.

// Parte 4 de la práctica de apuntadores


int i=10, j=0, *p,**q;

p=&i;

cout << "j= " << j << " la dirección de j = " << &j << endl;
cout << "i= " << i << " la dirección de i = " << &i << endl;

j = 1 + *p;
cout << "j= " << j << endl;

*p = 20;
cout << "i= " << i << endl;

*q= &j;

cout << " **q es:" << **q << endl;

i= 2 + **q;

cout << "i= " << i << endl;

return 0;
}