C Arrays and Pointers for Java programmers

C arrays

C pointers

C array and pointer examples

Barely readable function to reverse an array

void reverse(int V[], int n) {
  int i, j ;
  for (i=0, j=n-1; i<j; ++i, ++j) {
    int t ;
    t = V[i] ;
    V[i] = V[j] ;
    V[j] = t ;
  }
}

Unreadable function to reverse an array

reverse(int *p, int *q) {
  if (p>q) {
    int *t ;
    t = p ;
    p = q ;
    q = t ;
  }
  for (; p<q; ++p, --q) {
    int t ;
    t  = *p ;
    *p = *q ;
    *q = t ;
  }
}

More unreadable function to reverse an array

reverse(int *p, int *q) {
  if (p>q) {
    int *t ;
    t = p ;
    p = q ;
    q = t ;
  }
  while (p<q) }
    int t ;
    t  = *p ;
    *p++ = *q ;
    *q++ = t ;
  }
}

Obscure question from Spring 2008 ECE 209 final

  int i, j ;
  int m[2] ;
  int *p, *q ;
  i = 5 ;
  j = 6 ;
  m[0] = 7 ;
  m[1] = 8 ;
  p = m ;
  q = &i ;
  *p = *q ;
  printf("%d %d %d %d\n", i, j, m[0], m[1]) ;
  p = q ;
  *q = j ;
  printf("%d %d %d %d\n", i, j, m[0], m[1]) ;