Practica 5

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

Universidad Tecnológica del Sur de Sonora

Practica 5:
Apuntadores
(Punteros)

Lenguaje de programación.
4to. cuatrimestre.
Practica 5: Apuntadores (Punteros)
Objetivos:
• Utilizar apuntadores en lenguaje C para acceder a las localidades de
memoria tanto de datos primitivos como de arreglos.
• Declarar, asignar y utilizar la aritmética de un puntero recorriendo y
accediendo arreglos en un programa básico de monitoreo de una variable
físicas.
• Acceder a un dato específico en un arreglo.
Material y equipo:
Cantidad Equipo
1 Computadora con Dev C++.

Duración: 2 horas.

I. Fundamentación teórica.
Un apuntador es una variable que contienen la dirección de memoria de otra variable, es
decir, hace referencia a la localidad de memoria de otra variable. Los apuntadores se
utilizan para dar claridad y simplicidad a las operaciones a nivel memoria.
Para declarar un apuntador se debe definir el tipo de dato y el nombre de la variable
apuntador precedida de un asterisco (*). Una variable de tipo apuntador debe tener el mismo
tipo de dato de la variable a la que va a apuntar:

TipoDeDato *apuntador, variable;

Para asignarle un valor al apuntador, se debe de acceder a la localidad de memoria de la


variable a través de un ampersand (&):

Apuntador = &variable;

Los apuntadores solo deben apuntar a variables del mismo tipo de dato con el que fueron
declarados.
II. Desarrollo experimental.
Pre-reporte.
Sintaxis básica de la declaración de un apuntador.
Lectura de la fundamentación teórica.
1. Abre Dev C++ en la computadora.
Primera parte.
2. Escribe el siguiente programa que declara un apuntador y se le asigna la
dirección de la variable c. Imprime el contenido de la dirección, el código
ASCII del contenido y la dirección.
//Apuntador a un caracter
#include<stdio.h>
int main()
{
char *ap, c; //* indica que será un apuntador
c = 'X';
ap = &c; //guarda la dirección de la varible c
//imprime el caracter (contenido) de la localidad a la que apunta
printf("Carácter: %c\n", *ap);

//imprime el código ASCII de la localidad a la que apunta


printf("Codigo ASCI: %d\n", *ap);

//imprime la dirección de memoria de la localidad a la que apunta


printf("Dirección de memoria: %d\n", ap);
}

¿Qué imprimió?

3. Ahora se aplicará el concepto de apuntadores con variables enteras.


//Apuntador a un entero
#include<stdio.h>
int main()
{
int a = 5, b = 10; //Declaración de variables
int *apEnt;
apEnt = &a; //guarda la dirección de la variable c
//imprime el valor entero de a
printf("a = %d\n", a);
b = *apEnt; // b = 5
//imprime el valor de lo que apunta apEnt
printf("b = %d //*apEnt\n", b);
b = *apEnt + 1; // b = 6;
//imprime el valor de lo que apunta apEnt + 1
printf("b = %d //*apEnt+1\n", b);
*apEnt = 0; //a = 0
//le asigna el valor de 0 a la variable al que apunta apEnt
printf("a = %d //*apEnt = 0\n", a);
}
¿Qué imprimió? Explica los resultados.

__________________________________________________________________
__________________________________________________________________
__________________________________________________________________

4. En el caso de arreglos, el nombre es el apuntador. Escribe el siguiente


programa, revisa que no contenga errores, compila y ejecuta.
//Apuntador a un arreglo
//%x hace referencia a un dato hexadecimal
#include<stdio.h>
int main()
{
int arr[5];
int *apArr; //Apuntador tipo entero
apArr = &arr[0]; //Se asigna la dirección del primer elemento
//imprime la dirección de memoria del arreglo en la posición [0]
printf("Direccion del arreglo en la primera posicion: %x\n", &arr[0]);
//imprime la dirección de memoria del arreglo
//(el nombre del arreglo es un apuntador
printf("Direccion del arreglo: %x\n", &arr);
//imprime la direccion de memoria del apuntador apArr
printf("Direccion del apuntador: %x\n", apArr);
}
¿Qué imprimió? Explica los resultados.

__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
5. Dentro de la aritmética de los apuntadores, suponiendo que apArr es un
apuntador a algún elemento de un arreglo, entonces:
a. apArr++: incrementa apArr para apuntar a la siguiente localidad de memoria.
b. apArr+=i: Incrementa apArr para apuntar a la i-ésima localidad de memoria
a partir del valor inicial de apArr.
6. Escribe el siguiente programa, revisa que no contenga errores, compila y
ejecuta.
//Aritmética de apuntadores
#include<stdio.h>
int main()
{
int arr[5] = {91,28,73,46,55}; //Inicialización del arreglo
int *apArr; //Apuntador tipo entero
apArr = arr; //apunta al inicio del arreglo
printf("*apArr = %d\n", *apArr);
//suma una localidad al inicio del arreglo e imprime su valor
printf("*(apArr + 1) = %d\n", *(apArr + 1));
//suma dos localidades al inicio del arreglo e imprime su valor
printf("*(apArr + 1) = %d\n", *(apArr + 2));
}
¿Qué imprimió? Explica los resultados.

__________________________________________________________________
__________________________________________________________________
__________________________________________________________________

III. Actividades complementarias (obligatorias).


1. Elabora un programa que capture 10 números y determine el mayor y en que
posición se encuentra (usando apuntadores).
2. Elabora un programa que capture 10 números y determine el menor y en que
posición se encuentra (usando apuntadores).
3. Elabora un programa que capture 10 números y los ordene de mayor a menor
(usando apuntadores).

Nota: Puedes hacer un solo programa para cada punto o todo en un solo programa y usar un menú
para acceder a cada uno de los programas en las actividades complementaras.

También podría gustarte