Puoi dare un occhiata alla funzione malloc()
avevo visto tempo fa il codice di una funzione strreverse() che serviva per invertire
l'ordine dei caratteri di una stringa , e visto che in C le stringhe sono array il codice
lo si può usare per qualunque array di qualsiasi tipo 
il funzionamento è propio quello che ti hanno gia descritto , magari vedendo il codice
e cercando di capire come funziona è piu semplice.
interessante come funziona per numero di elementi pari e dispari bisogna ragionarci un
po sopra. soluzione furba 
codice:
#include <stdio.h>
#include <stdlib.h>
void inverti(int x[],int dim);
int main(int argc, char *argv[])
{
int *vettore;
int i;
int n;
printf("Quanti numeri vuoi digitare? ");
scanf("%d",&n);
vettore=(int*)malloc(sizeof(int)*n);//crei un array di n elementi
printf("Digita %d valori:\n",n);
for(i=0;i<n;i++){
printf(" %d elemento --> ",i+1);
scanf("%d",&vettore[i]);
}
inverti(vettore,n);
free(vettore);
system("pause");
}
void inverti(int x[],int dim)
{
/*
Visto che gl' indici degli array partono
da 0 l'ultimo elemento sara dim -1
la meta degli elementi sarà dim/2-1
lo dico perchè mi sono sbagliato :)
cosa interessante è che se gli elementi
sono in numero pari verranno invertiti
tutti se sono numero disperi l'elemento centrale non verra
considerato e sarà il "perno"
esempio:
numero elementi 5
diviso 2 arrotondato ad intero si ottiene 2
vengono invertiti 1 col 5
2 con 4
e il tre rimane invariato
*/
int i,j,temp;
int mid=(int)(dim/2)-1; //meta degli elementi arrotondati a intero
for(i=0,j=dim-1;i<=mid;i++ ,j--)
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
for (i=0;i<=dim-1;i++)
printf("%d\n",x[i]);
}