thanks for the input. Part of the title of this particular forum is "understanding the language" and your input is certainly helping me in that respect. If you don't think this is the place to "understand the language" then please ask the moderators to change the title.
I do actually have most of the fundamentals of c++ squared away apart from the most foreign concept of memory pointers - foreign in the sense of being a VB programmer where I couldn't actually give a rats where .NET puts the bytes into memory, as long as I can retrieve it when I need to.
I don't expect any in depth explanation here of how wonderful that concept is in the c++ world as I'm sure there are many fine documents on the web that do just that (read one last night). What is of the most immediate help is seeing example of it's use in code snippets. lloyddean has done a fine job of that in his state of sickly insomnia (poor chap).
Nick, I am grateful for your time, however, if I was struggling with basic language concepts please explain how I could have possibly already created code that delivers functions of an advanced radio control transmitter with 8 channel PPM out, 8 model settings, full expo, trim, travel, mixing (still working on that) and a fancy menu system to alter all settings. All communicating via I2C to another Arduino embedded in a PC joystick with 10 button decoding and a 12bit I2C ADC for added resolution for the joystick pots? This was not copied code. I completely wrote the code from scratch, including a new LCD03_I2C libraray. None of the existing libraries on the web for menu's that I saw were capable of an action to scroll up or down to other menu pages or let you display dynamic variables, all of which you can modify, be it text, int or float. With this complexity, RAM has come at a steep price and I have had to move up to running the code on a Mega2560 from a Nano. Link to my blog - http://www.diydrones.com/profiles/blogs/pc-joystick-to-8ch-tx-conversion
If anyone is interested I will put the code up on Google Code hosting.
To Ikazone, I understand that the struct size cannot change, however I would have thought that an array of structs could change its bounds. Hence the sub-brackets to group each struct. Assigning the values for each index position in the array individually is what is working for me now and lloyddean's example still works with a fixed array size (MAX_DYNAMIC = 10), which is what I have set already so no real RAM saving going on there.
I've ordered a cheap SD card module and I'm going to write a Windows app to let you visually design the menu's and store each of the menu settings in binary files on the SD card. The Arduino code will then read the selected menu settings from the SD card as they are activated. This will not change the RAM used as the menu object with all its settings will not change, just the code will change to read the object structure from the files on the SD card, rather than having the definitions for each in code. If I am going with the SD card concept then having fixed array sizes will actually make reading the settings in much easier.