Проблема с сортировкой массива указателями
Задача: отсортировать в обратном порядке массив через функцию. По моей задумке я передаю в функцию указатель на первый элемент массива.
Разыменовываю и сравниваю p и p+1, если p меньше, тогда меняю значения по адресам. Подскажите, где я накосячил? Реализация хоть немного похожа на правду?
#include <stdio.h>
#include <stdlib.h>
#define n 3
void sort(int* p);
void swap(int* p1, int* p2);
void output_array(int* p);
int main()
{
int a[n] = {1,2,3};
sort(a);
output_array(a);
return 0;
}
void sort(int* p)
{
int box;
for (int i=0; i<n-1; i++)
for (int j=i; j<n; j++)
if (*(p+i) < *(p+j))
swap(p+i, p+j);
return 0;
}
void swap(int *p1, int* p2)
{
int box = *p1;
*p1 = *p2;
*p2 = box;
return 0;
}
void output_array(int* p)
{
for (int i=0; i<n; i++)
printf("%d", *p+i);
return 0;
}