[langage C]peut on ecrire un type cré par typedef?

j’ai fais ca:

typedef struct graphe *pgraphe;
typedef struct graphe
{
char nom;
char variable[3];
char val_variable[3];
char conditionpassage[100];
pgraphe suivant;
}tgraphe;

puis a un moment je fais ca:

pgraphe creergraphe(char carac)
{
pgraphe aux;
printf("%c\n",carac);
aux=(pgraphe)malloc(sizeof(tgraphe));
printf("%c\n",aux);
aux->nom=carac;
aux->variable[0]=0;aux->variable[1]=0;aux->variable[2]=0;
aux->val_variable[0]=0;aux->val_variable[1]=0;aux->val_variable[2]=0;
aux->suivant=NULL;
return aux;
}

et enfin, cela:
g=creergraphe(‘x’);
tab[0]=g;
puts(tab[0])
et l’erreur vient de la car, au lieu de m’ afficher l’adresse de l’element g, il m’affiche x.je ne comprend pas.peut-etre le puts n’est pas approprié, alors comment écrire g étant donné que celui ci a un type inventé par moi?
aidez moi!!!!
merci!

g=creergraphe('x');
tab[0]=g;
printf("%p", tab[0]);

il ne faudrait pas plutot retourner unpointer dans ta fonction?:

pgraphe *creergraphe(char carac)

Ensuite je pense que tu devrais supprimmer ta permiere ligne:

typedef struct graphe *pgraphe;

et dans ta fonction creer un pointer:

 pgraphe *aux;