home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / borhot / arymult.c < prev    next >
C/C++ Source or Header  |  1991-11-28  |  2KB  |  72 lines

  1. /* ------------------------------------------------------ */
  2. /*                    ARYMULT.C                           */
  3. /*     Dynamically Allocated Multi-dimensional Arrays     */
  4. /*            (c) 1990 Borland International              */
  5. /*                 All rights reserved.                   */
  6. /* ------------------------------------------------------ */
  7. /*  veröffentlicht in: DOS toolbox 1'91/92                */
  8. /* ------------------------------------------------------ */
  9. #include <stdio.h>       // for printf() and putchar()
  10. #include <stdlib.h>      // for exit()
  11. #include <alloc.h>       // for malloc()
  12.  
  13. #define ROW    10
  14. #define COLUMN 15
  15.  
  16. typedef int         ARRAYTYPE;
  17. typedef ARRAYTYPE * ARRAYTYPEPTR;
  18.  
  19. //  Declare the 2D array as a pointer to
  20. //  a pointer to ARRAYTYPE.
  21. //  Note there is no memory allocated for the array yet.
  22.  
  23. ARRAYTYPEPTR *array;
  24.  
  25. // ------------------------------------------------------- *
  26. int main()
  27. {
  28.   int i, j;
  29.  
  30.   // First, allocate an array of pointers to ARRAYTYPE of
  31.   // ROW elements. Next, looping through the array of
  32.   // pointers, allocate arrays of ARRAYTYPE of COLUMN
  33.   // elements and assign them to the pointers.  This
  34.   // assigns the necessary  memory to the array,
  35.   // which you can then index via the [] operators.
  36.  
  37.   array = (ARRAYTYPEPTR *)
  38.             malloc (ROW * sizeof(ARRAYTYPEPTR));
  39.   if (array == NULL) {
  40.     printf("\nUnable to allocate memory! Exiting to DOS.");
  41.     exit(1);
  42.   }
  43.  
  44.   for (i = 0; i < ROW; i++) {
  45.     array[i] = (ARRAYTYPEPTR)
  46.                  malloc (COLUMN * sizeof(ARRAYTYPE));
  47.     if (array[i] == NULL) {
  48.       printf("\nUnable to allocate memory! Exiting to DOS.");
  49.       exit(1);
  50.     }
  51.   }
  52.  
  53.   // Fill array with unique values
  54.  
  55.   for (i = 0; i < ROW; i++)
  56.     for (j = 0; j < COLUMN; j++)
  57.       array[i][j] = (COLUMN * i) + j;
  58.  
  59.   // Print out array to make sure everything's OK
  60.  
  61.   for (i = 0; i < ROW; i++) {
  62.     for (j = 0; j < COLUMN; j++)
  63.       printf("%4d", array[i][j]);
  64.   putchar('\n');
  65.   }
  66.  
  67.   return 0;
  68. } // end of main()
  69. /* ------------------------------------------------------ */
  70. /*                  Ende von ARYMULT.C                    */
  71.  
  72.