EXERCISES ON POINTERS AND ARRAYS



 1. Assume int x[5] = {0, 1, 2, 3, 4}.  What are the values of x after calling
    swap3(x, 1, 4)?

        void swap3(int a[], int i, int j) {
           int t;
           t = a[i]; a[i] = a[j]; a[j] = t;
        }

 2. Assume int x[5] = {0, 1, 2, 3, 4}.  What are the values of x after calling
    swap2(x+1, x+4)?

 3. Assume int x[5] = {0, 1, 2, 3, 4}.  What does print3(&x[0]) print?
    print3(&x[2])?  print3(&x[4])?

        void print3(int x[]) {
           int i;
           for (i = 0; i < 3; i++)
              printf("%d ", x[i]);
        }

 4. When we pass an array to a function in C, it passes a pointer to array
    element 0 instead.  Why doesn't C just create a new local copy of
    the array, as it does with integers?

 5. What is the difference between the following two function:

       int middle1(int a[], int n) {      int middle2(int *a, int n) {
          return a[n/2];                     return a[n/2];
       }                                  }