¿Cómo comparar punteros C?
Recientemente, escribí un código para comparar punteros como este:
if(p1+len < p2)
sin embargo, algunos miembros del personal dijeron que debería escribir así:
if(p2-p1 > len)
para estar seguro. Aquí,p1 yp2 sonchar *
punteroslen es un entero No tengo idea de eso. ¿Es eso correcto?
EDIT1: por supuesto,p1 yp2 puntero al mismo objeto de memoria en la mendicidad.
EDIT2: Hace un minuto, encontré elbogo de esta pregunta en mi código (sobre 3K líneas), porquelen
es tan grande quep1+len
no se puede almacenar en 4 bytes de puntero, por lo quep1 + len <p2 escierto.Pero no debería, de hecho, creo que deberíamos comparar punteros como este enalguna situacion:
if(p2 < p1 || (uint32_t)p2-p1 > (uint32_t)len)