Originariamente inviato da darkblOOd
So che un puntatore deve puntare ad un'area di memoria che contiene un valore dello stesso tipo
No, attenzione. Un puntatore può contenere teoricamente qualunque indirizzo valido per l'architettura della macchina. Che poi quell'indirizzo sia realmente accessibile o meno, è un altro conto.
Inoltre il tipo del valore puntato indica solo che l'operazione di dereferenziazione andrà ad accedere ad una area di memoria lunga quanto il tipo di dato dichiarato.

Per intenderci:
int a = 1234;

int *pi = &a;
short *ps = (short*) &a;

È perfettamente lecito. In pratica pi e ps puntano alla stessa locazione (al valore intero 'a'). A cosa poi possa servire ... sono cavoli tuoi.

Originariamente inviato da darkblOOd
ma pensavo se era possibile associare cmq il valore esadecimale di una cella di memoria.

per esempio, supponendo di sapere che nella cella 0x23ff45 c'è un valore intero se si può fare:

int *p = 0x23ff45

oppure, se non si conosce il tipo di dato contenuto ma si conosce la cella di memoria alla quale si vuole fare riferimento:

void *p = 0x23ff45
Certo che è possibile.
Per essere precisi devi fare:

int *p = (int*) 0x23ff45;

Cioè devi fare anche il cast. Il void* non va bene ... semplicemente perché non potresti dereferenziarlo!

Poi a cosa ti serva e cosa contiene quella cella di memoria indicata in esadecimale, ancora una volta, sono cavoli tuoi.