On Oct 13, 2005, at 7:55 PM, Steve Calfee wrote:
This is really a C question. You could use either: decoder->sync = &syncDat[0]; or decoder->sync = syncDat;
And both of these assume that decoder->sync point to an array of unsigned char, ie defined unsigned char *syncDat; or equivalent in a struct.
Further to what Steve and Andre have said:
C represents arrays as pointers; any pointer can be indexed as an array, and a reference to any array is a pointer. When you say syncDat [0], you're actually saying "Dereference the zeroth element of the array syncDat for me." & converts that back into a pointer, so &syncDat[0] means "dereference the zeroth element of syncDat, and then give me its address" - a no-op!
The reason syncDat and &syncDat[0] are the same is because syncDat already points at the zeroth element - it is just the memory address of the contiguous array in memory, and that memory address contains the zeroth element.
Understanding pointers and arrays in C is tough work, but once you've got it, you understand the language a lot more. Hope this shed some light on the subject for you.
Joe