Ver Mensaje Individual
  #120 (permalink)  
Antiguo 06/10/2006, 20:40
Nivel7
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
asi es,

recuerda que el operador & te da la direccion de la variable apuntada.

ahora, una estructura es en realidad un array cuyos indices se indican con el nombre del campo en lugar de un numero.

lo que hace la exprecion;

(Estructura*)0;

es interpretar la direccion 0 como si fuese un puntero a Estructura,

ya que tenemos la direccion del primer miembro de la estructura(Que es la que representa la direccion de la estructura), tenemos que saber la direccion del miembro en cuestion.

&((Estructura*)0)->Campo;
esta exprecion nos retorna la direccion del miembro Campo.

como es logico que : DirCampo - 0 = DirCampo;
tenemos que la diferencia en bytes del primer miembro de la estructura al miembro en cuestion es el resultado de la exprecion mencionada.
esta claro que en ningun momento tenemos la intencion de acceder a tal campo, solo nos desplazamos al supuesto miembro, en una supuesta estructura.

ahora solo basta aplicar la resta del offset a la estructura real.