home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_11_09 / 1109110b < prev    next >
Text File  |  1993-07-13  |  1KB  |  59 lines

  1. /* array2.c: Traverses an array with an index and a pointer */
  2. #include <stdio.h>
  3.  
  4. main()
  5. {
  6.     int a[] = {0,1,2,3,4};
  7.     int i, *p;
  8.      size_t n = sizeof a / sizeof a[0];
  9.  
  10.     /* Print using array index */
  11.     for (i = 0; i < n; ++i)
  12.         printf("%d ",a[i]);
  13.     putchar('\n');
  14.  
  15.     /* You can even swap a and i (but don't) */
  16.     for (i = 0; i < n; ++i)
  17.         printf("%d ",i[a]);
  18.     putchar('\n');
  19.  
  20.     /* Print using a pointer */
  21.     p = a;
  22.     while (p < a+n)
  23.         printf("%d ",*p++);
  24.     putchar('\n');
  25.  
  26.     /* Using index notation with pointer is OK */
  27.     for (p = a, i = 0; i < n; ++i)
  28.         printf("%d ",p[i]);
  29.     putchar('\n');
  30.  
  31.     /* Using pointer notation with array is OK */
  32.     for (i = 0; i < n; ++i)
  33.         printf("%d ",*(a+i));
  34.     putchar('\n');
  35.  
  36.     /* Print backwards using pointer */
  37.     p = a + n-1;
  38.     while (p >= a)
  39.         printf("%d ",*p--);
  40.     putchar('\n');
  41.  
  42.     /* Negative subscripts are allowed */
  43.     for (i = 0, p = a + n-1; i < n; ++i)
  44.         printf("%d ",p[-i]);
  45.     putchar('\n');
  46.     return 0;
  47. }
  48.  
  49. /* Output
  50. 0 1 2 3 4
  51. 0 1 2 3 4
  52. 0 1 2 3 4
  53. 0 1 2 3 4
  54. 0 1 2 3 4
  55. 4 3 2 1 0
  56. 4 3 2 1 0
  57. */
  58.  
  59.