L'impression de l'adresse d'un struct objet

J'ai un struct comme ce

typedef struct _somestruct {
    int a;
    int b;
}SOMESTRUCT,*LPSOMESTRUCT;

Je suis entrain de créer un objet pour le struct et l'impression qu'il adresse comme ceci

int main()
{
    LPSOMESTRUCT val = (LPSOMESTRUCT)malloc(sizeof(SOMESTRUCT));

    printf("0%x\n", val);

    return 0;
}

..et je reçois cet avertissement

avertissement C4313: 'printf' : '%x' dans
chaîne de format conflits avec l'argument
1 de type 'LPSOMESTRUCT'

Donc, j'ai essayé de jeter l'adresse de int comme ce

printf("0%x\n", static_cast<int>(val));

Mais j'obtiens cette erreur:

error C2440: 'static_cast' : ne peut pas
de convertir de 'LPSOMESTRUCT' int'

Ce qui me manque ici? Comment faire pour éviter cet avertissement?

Grâce.

OriginalL'auteur bdhar | 2010-06-14