Datei: mem2.c


    1   /*
    2    *      mem2.c
    3    *      klin, Wed Dec 17 15:08:57 1997
    4    *      Speicherabbildung von Feldern und Strings
    5    */
    6   
    7   #include <stdio.h>
    8   #include <ctype.h>
    9   
   10   #define N 2
   11   #define M 8
   12   #define byte unsigned char
   13   
   14   char a1[N][M] = {
   15     { 'a', '1', '-', '1', '\0' },
   16     { 'a', '1', '-', '2', '\0' },
   17   };
   18   
   19   char a2[N][M] = { 
   20     "a2-1", 
   21     "a2-2", 
   22   };
   23   
   24   char *a3[N] = {
   25     "a3-1",
   26     "a3-2",
   27   };
   28   
   29   void puthex(byte *, int);
   30   
   31   void main(void)
   32   {
   33     int i;
   34     
   35     printf("Speicherabbildung von Feldern und Strings\n\n");
   36         
   37     printf("a1  a = %p/%p  s = %d\n", a1, &a1, sizeof(a1));
   38     puthex((byte *) a1, sizeof(a1));
   39     for (i = 0; i < N; i++)
   40       printf("a1(%d) = %p/%p \"%s\"\n", i, a1[i], &a1[i], a1[i]);
   41   
   42     printf("a2  a = %p/%p  s = %d\n", a2, &a2, sizeof(a2));
   43     puthex((byte *) a2, sizeof(a2));
   44     for (i = 0; i < N; i++)
   45       printf("a2(%d) = %p/%p \"%s\"\n", i, a2[i], &a2[i], a2[i]);
   46       
   47     printf("a3  a = %p/%p  s = %d\n", a3, &a3, sizeof(a3));
   48     puthex((byte *) a3, sizeof(a3));
   49     for (i = 0; i < N; i++)
   50       printf("a3(%d) = %p/%p \"%s\"\n", i, a3[i], &a3[i], a3[i]);
   51     for (i = 0; i < N; i++)  
   52       puthex((byte *) a3[i], 8);
   53   
   54   } /* main() */
   55   
   56   void puthex(byte *s, int n)
   57   {
   58     int i;
   59     
   60     for (i = 0; i < n; i++) {
   61       printf("%02x", s[i]);
   62     }
   63     printf("\n");
   64     for (i = 0; i < n; i++) {
   65       printf("%2c", isprint(s[i]) ? s[i] : '.');
   66     }
   67     printf("\n");
   68   
   69   } /* puthex() */


Erzeugt von c2html 1.0