Ты делаешь это слишком сложно.Имея указатель на массив, вы можете использовать оператор индексации для него так же, как и для самого массива:
int a[size] = {1,2,3,4,5};
int i;
int *pa = a;
for (i = size - 1; i >= 0; i--) {
printf("a[%d] = %d\n", i, pa[i]);
}
В качестве альтернативы, если вы хотите по какой-то причине избежать оператора индексации, просто запуститеваш указатель на один конец ...
*pa = a + size;
... и декремент это при прохождении цикла:
for (i = size - 1; i >= 0; i--) {
pa--;
printf("a[%d] = %d\n", i, *pa);
}
Заметьте,Между прочим, индексирование массива в C начинается с 0, так как приведенные выше примеры кода правильно учитывают.