Harold Hallikainen wrote: > C:\ProductDesigns\HuwaldtGuitar\Control\050415\main.c:369:Error > [1131] type mismatch in assignment [...] > SongArray=&Song1Array; >>> struct SongChord rom const Song1Array[]={ data goes here } [...] >>> struct SongChord rom const *SongArray; // local pointer to a >>> song [...] >>> SongArray=&Song1Array; Song1Array is defined as an array of SongChord structs. The subscript operator is just a clever(?) syntactical trick to hide the pointer arithmetic behind arrays in c. SongArray = & Song1Array (pointer to a SongArray) = (address of) (pointer to 1st SongArray) Either of the following will work (choose the one that makes the most sense to you): SongArray= Song1Array; // direct pointer assignment SongArray= &Song1Array[0]; // address of dereferenced pointer You can also write the above statement like this ( the "+ 0" is to help clarify the comparison). SongArray= & *(Song1Array + 0); HTH, Tad Anhalt -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist