quindi dovrei definirla e dichiararla dentro un .h ma non inizializzarla, giusto?

ed aspettare a inizializzarla dentro al .c

un'altra domanda, devo avere come potete leggere una funzione che mi "crea un tipo di dato" pila ed un altra funzione che me lo gestisce, per far questo l'unico modo che ritengo plausibile eà quello di far ritornare un puntatore alla funzione che crea la pila oppure di prendere un puntatore come parametro ed assegnarle l'array o la struct relativa alla pila, c'ho provato ma alla fine il puntatore punta soltanto al primo elemento dell'array e se provo a scorrerlo accedo a locazioni di memoria non valide o cmq non appropriate, da cosa dipende il mio errore? come posso risolverlo?