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]);  
    
    
    }