2009/9/22 Ben Klein <shackl...@gmail.com>: > 2009/9/22 Vitaliy Margolen <wine-de...@kievinfo.com>: >> Mike Kaplinskiy wrote: >>> It actually does not dereference anything. Try passing null into the >>> function - it will work just fine. This is a special case because the >>> array isn't dynamically allocated but is part of the struct, which >>> means that dmW->dmFormName == (dmW+__offset of dmFormName) and not >>> *(dmW+__offset of dmFormName). You can try writing a test program >>> yourself - it will run just fine. >> It does dereference the pointer. Here is your simple test. Compile it and >> run it. See what happens. >> >> #include <stdio.h> >> >> typedef struct _s_test >> { >> void *pointer; > > No. Array, not pointer. E.g.: > int array[1]; > >> } s_test; > > >
If it IS the case that this doesn't cause a crash and is perfectly valid, can someone explain to me how/why this works? Or point me (no pun intended) to the bit in the C spec that explains it? Coz the way I read it, it has to dereference dmW, otherwise how would the compiler find the address of the array? ... so confused :) Luke.