ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

ESTRUCTURAS


Enviado por   •  1 de Noviembre de 2012  •  1.435 Palabras (6 Páginas)  •  232 Visitas

Página 1 de 6

DESARROLLO DE LA ACTIVIDAD

1. Conceptualización de la memoria dinámica.

De acuerdo a la conceptualización del módulo referente a la unidad 1 y a las consultas bibliográficas en la Biblioteca virtual de la UNAD, de respuesta en la columna de la derecha a los siguientes interrogantes:

ENUNCIADO RESPUESTA

En la gestión dinámica de memoria ¿Qué utilidad tiene la función Malloc()?

Es una función que asigna memoria propias del lenguaje de programación C, donde se pasa la cantidad de bytes que se necesita. Malloc reserva y encuentra un bloque de memoria del tamaño pedido y regresa la dirección del primer byte del bloque. Esta función regresa una dirección y su tipo de retorno es un apuntador a tipo void porque es compatible con todos los tipos de datos.

Cual es la utilidad del operador sizeof en la gestión dinámica de memoria?

Es un operador que determina el tamaño en bytes que se requiere en la asignación dinámica de memoria, por medio de los operadores New y Delete o por las funciones Malloc y Free, de un arreglo o de cualquier otro tipo de datos.

Establezca la diferencia relacionadas con el operador sizeof entre las dos instruciones de código siguientes:

Instrucción 1.

valor = (float * ) malloc (10 * sizeof (float));

Instrucción 2.

valor = (float * ) malloc (sizeof (float)); En la instruccion 1, asigna memoria para un arreglo de 10 valores float.

En la instrucción 2, asigna memoria para un arreglo de tipo float.

La diferencia es que en la primera instrucción se da un numero especifico de los valores float a reservar, y en la segunda instrucción la asignación es general.

Si se requiere liberar la memoria previamente asignada en un programa codificado en C++ se puede hacer uso de:

Se puede utilizar Delete siempre y cuando se utilice con el operador New.

O se utiliza la función Free, utilizada con la función Malloc.

Indique la instrucción de código necesaria en utilizando la sintaxis de C++ para liberar memoria dinámica previamente asignada a una variable apuntador de tipo entero llamada número, a través de la función Free().

#include <stdlib.h>

#include <stdio.h>

int main()

{

clrscr();

int *numero=NULL;

int npersonas=25;

numero=(int *)malloc(npersonas);

if(numero==NULL)

{

cout<<"No hay personas en el salon\n";

return -1;

}

cout<< "Numero de personas\n\n";

cout<<"Hay" <<npersonas <<" personas en salon\n";

free(numero);

getch();

}

Indique la instrucción de código utilizando la sintaxis de C++ para la asignar memoria dinámica a una variable apuntador de tipo float llamada código a través del operador New.

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

float *codigo;

codigo = new float ;

*codigo = 203010 ;

cout <<"Codigo estudiante\n\n";

cout <<"El codigo es :" <<*codigo ;

delete codigo ;

getch();

}

Haga una consulta en la biblioteca virtual de la UNAD para indicar en pocas palabras la importancia de los apuntadores en la programación de C++.

Los apuntadores son indispensables porque, se pueden apuntar a cualquier tipo de variable y usar de manera extensiva; es la única forma de expresar algunos cálculos, los códigos son compactos y eficientes lo que lo hace una herramienta poderosa. Además, otorga rapidez y flexibilidad a los programas.

2. Aplicación de los apuntadores.

Analice el siguiente código que es una parte de un programa como aplicación de apuntadores a apuntadores, complete las líneas de código que faltan, compílelo y lo ejecuta y así confirma la salida en pantalla, documente cada una de las líneas de código y exprese el resultado que arrojan las variables: a, *x, **y, ***z, para lo cual se debe realizar y anexar a este punto la prueba de escritorio.

LINEA CODIGO DOCUMENTACION Y RESULTADOS

1 void main(){

No retorna ningún valor y se coloca la llave de apertura a la función principal.

2 int a=10;

La variable a es de tipo entero y se le asigna un valor de 10.

3 int *x, **y, ***z ;

X es un apuntador de tipo entero, y es un apuntador a puntador de tipo entero y z es un apuntador a apuntador a apuntador de tipo entero.

4 *x=NULL,**y=NULL,***z=NULL;

*x,**y y ***z no apunta a nada o están inicializados a 0.

5 clrscr();

Es para limpiar la pantalla para que las salidas de anteriores ejecuciones se sigan mostrando.

6 x = &a;

Asigna a x la dirección de a, x apunta a.

7 *x = 120;

Almacena en a el valor 120.

...

Descargar como (para miembros actualizados)  txt (11 Kb)  
Leer 5 páginas más »
Disponible sólo en Clubensayos.com