Je ne suis pas sur d'avoir compris ta question, mais bon
un pointeur contient une adresse. Pour le processeur, une adresse ne pointe pas vers un type de données particulier.
Le C te force à dire vers quel type de données pointe un pointeur, mais c'est pour t'aider à ne pas faire de bétises.
Tu peux très bien faire:
char a=45;
int *b = (int *)&a;
float ***c = (float ***)b;
printf("%c",*(char*)c);