I2P en P2I
September 14th, 2006
No comments
Hoe zet je in nette ansi c code een integer om in een pointer, en vice versa?
#define I2P(i) ((void *)((char *)0 + (i)))
#define P2I(p) ((int)((char *)(p) - (char *)0))
I2P: char adres 0 + integer adres is char adres van i. Cast naar void pointer zodat het resultaat in elke pointer var past.
P2I: cast pointer naar char pointer (kleinste adressering), haal daar char adres 0 vanaf om een integer waarde te verkrijgen. De cast naar int zit er bij omdat je in c in principe altijd het beste int kunt gebruiken, dat is op elk systeem het snelste type.
C, Code, Kort, NL, Programmeren

Recent Comments