FUNCIONES QUE DEVUELVEN APUNTADORES

#include. #include. #include const int ESC = 27; typedef unsigned char BYTE; typedef struct TColor { BYTE R; BYTE G; BYTE B; };.
248KB Größe 7 Downloads 65 vistas
Asignatura: TALLER DE LENGUAJES 2014 Carrera: PROGRAMADOR UNIVERSITARIO / Lic. EN INFORMATICA Dictado: Ing Juan Manuel Conti. PUNTEROS DOBLES. El concepto básico de un puntero doble es el de un identificador de programa cuyo contenido es una dirección donde a su vez se halla almacenada otra dirección:

60200 ppENT

60200

60500

60500

1525

pENT

Analizar las siguientes notaciones:

cprintf(“%u”,ppENT) --> muestra 60200 cprintf(“%u”,*ppENT) --> muestra 60500 cprintf(“%d”,**ppENT) --> muestra 1525 O sea que la primera indirección referencia la dirección donde se halla el dato en sí, y la segunda el dato en sí: 1525. El lector se preguntará para qué esta sintaxis algo extraña. Ahora viene su utilidad.

Arreglos bidimensionales en memoria dinámica. Si el contenido en sí de ppENT es la dirección donde se halla otro apuntador, bien podría ser un arreglo de apuntadores en lugar de uno sólo:

DIM2

int ** int *

M

DIM1

int *

MEMORIA DINAMICA

Anteriormente habíamos creado una matriz semidinámica utilizando un arreglo estático de apuntadores, y recién a partir de allí entrábamos en la zona dinámica para hacer las reservas de DIM2 domicilios para cada elemento del arreglo de apuntadores.

Taller de Lenguajes I – Clase Teórica Nº4

Nº1 Pág 1/12

Asignatura: TALLER DE LENGUAJES 2014 Carrera: PROGRAMADOR UNIVERSITARIO / Lic. EN INFORMATICA Dictado: Ing Juan Manuel Conti. Los códigos necesarios para generar una matriz a partir de un puntero doble, son los siguientes: const DIM1 = 7; const DIM2 = 8; void main( ) { int **M; int i,j; clrscr( ); highvideo( ); randomize( ); // --- Genera y asigna la matriz dinámica ------------------------M = (int **)ReservarMemoria(DIM1*sizeof(int *)); for(i=0;i