#include <stdio.h>

/* Examples using arrays and pointers */

int main()
{
	int a[] = {0, 1, 2, 3, 4, 5, 6, 7};
	int i, *p;

/* print contents of an array using array indexing */
	printf("Array a[%d-%d]:\n", 0, 7);
	for (i = 0; i <= 7; i++) printf(" a[%d]=%d, ", i, a[i]);
	printf("\n");

/* print contents of an array using pointers */
	for (p = &a[0]; p <= &a[7]; p++) printf(" a[]=%d, ", *p);
	printf("\n");

/* change array elements using pointers */
	p = &a[3];
	*p = a[5];
	p[1] = a[0];
	printf("Array elements changed. New array:\n");
	for (i = 0; i <= 7; i++) printf(" a[%d]=%d, ", i, a[i]);
	printf("\n");

/* print contents of new array using pointers again */
	p = &a[0];
	for (i = 0; i <= 7; i++) printf(" a[%d]=%d, ", i, p[i]);
	printf("\n");

/* print contents using pointers, once more */
	for (p = a+7, i = 0; i <= 7; i++) printf(" a[%d]=%d, ", i, p[-i]);
	printf("\n");

/* print contents using pointers, final */
	for (p = a+7; p >= a; p--) printf(" a[]=%d, ", a[p-a]);
	printf("\n");

	return 0;
}

