Usin a RAW value of a variable.

...I need the memory position (pointer) of the first byte is the same if I have a Int or a long...

Wrong. A pointer is a data type that can point to a specific type of data (int, char, float). The rvalue of a pointer is the lvalue of the data item being pointed to. Those are not the same thing. The statement:

a = b;

takes the rvalue of b and places it in the rvalue of a. However, with a pointer:

ptr = &a;

takes the memory address of a (i.e., its lvalue) and assigns it into the rvalue of ptr. A valid pointer can only hold one of two values: 1) the lvalue of a variable of a specific data type, or 2) null. When you define ptr, you must tie it to some type of data, even if it is void.