Sort an array using pointers and no index variables

advertisements

i am trying to sort an array, using pointers and also without using index variables

void sort(int *a,int n)
{
  int *temp;
  *temp=0;
  int *b=a;
  for(;a<a+n-1;a+=1)
    {
      for(b=a+1;b<b+n;b+=1)
        {
          if(*a>*b)
          {
            *temp=*a;
            *a=*b;
            *b=*temp;
          }
        }
    }
}

the equivalent version of the above program without using pointers is

void sort(int a[],int n)
{
  int i,j,temp;
  for(i=0;i<n-1;i++)
    {
      for(j=i+1;j<n;j++)
        {
          if(a[i]>a[j])
          {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
          }
        }
    }
}

i am doing an exercise question, and i just started learning the pointers by myself. i believe i am doing it right as i am trying to avoid the usage of index variables too. i am receiving an error segmentation fault : 11 . what am i missing here? is the program wrong in someway? or the idea itself is wrong? feedback appreciated.


a<a+n-1 - that's always true if n > 1.

BTW, the argument int a[] decays to a pointer.