Page 248

4.3 M´as all´a de las matrices din´amicas ¿Ya? A´ un no. Aunque este programa compila correctamente y se ejecuta sin problemas, hemos de considerarlo incorrecto: hemos solicitado memoria con malloc y no la hemos liberado con free. palabras.c

palabras 1.c 1 2

#include <stdio.h> #include <stdlib.h>

3 . . . 43

}

44 45 46 47 48 49

int main(void) { char linea[MAXLON+1]; int numero_palabras, i; char ** las_palabras;

50

printf ("Escribe una frase: "); gets(linea); las_palabras = extrae_palabras(linea, &numero_palabras); for (i=0; i<numero_palabras; i++) printf ("%s\n", las_palabras[i]);

51 52 53 54 55 56

for (i=0; i<numero_palabras; i++) free(las_palabras[i]); free(las_palabras); las_palabras = NULL;

57 58 59 60 61

return 0;

62 63

}

Ahora s´ı.

4.3.2.

Arreglos n-dimensionales

Hemos considerado la creaci´ on de estructuras bidimensionales (matrices o vectores de vectores), pero nada impide definir estructuras con m´as dimensiones. Este sencillo programa pretende ilustrar la idea creando una estructura din´amica con 3 × 3 × 3 elementos, inicializarla, mostrar su contenido y liberar la memoria ocupada: tridimensional.c 1 2

tridimensional.c

#include <stdio.h> #include <stdlib.h>

3 4 5 6 7

int main(void) { int *** a; // Tres asteriscos: vector de vectores de vectores de enteros. int i, j, k;

8 9 10 11 12 13 14 15

// Reserva de memoria a = malloc(3*sizeof (int **)); for (i=0; i<3; i++) { a[i] = malloc(3*sizeof (int *)); for (j=0; j<3; j++) a[i][j] = malloc(3*sizeof (int)); }

16 17 18 19 20 21

// Inicializaci´ on for (i=0; i<3; i++) for (j=0; j<3; j++) for (k=0; k<3; k++) a[i][j][k] = i+j+k;

22

242

Introducci´ on a la Programaci´ on con C

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement