Newsgroups: comp.std.c Path: utzoo!utgpu!cunews!dgbt!don From: don@dgbt.doc.ca (Donald McLachlan) Subject: pointers to functions, dereferencing, first byte of func Message-ID: <1991Jan30.031315.9427@dgbt.doc.ca> Sender: don@dgbt.doc.ca (Donald McLachlan) Organization: The Communications Research Centre, Ottawa, Canada Distribution: na Date: Wed, 30 Jan 91 03:13:15 GMT I recently wanted to write a nastly bit of code for a PC (self modifying) so ... char *c; extern char func(); c = func; some code putting new hex values into the address space of the function now for the fun stuff. Under microsoft C, c[1] ... c[MAX_INT] worked, but c[0] would sometimes bugger me up. *c had the exact same unreliable results (as it should since *c is supposed to be identicle to c[0]). what I had to do to get at the first byte of executable code was ... char *c1; c1 = &(c[1]); --c1; /* should equal c[0] */ *c1 = char constant. hows that for bastardising code to fool a compiler!!!