Declaring and using array of structures in Arduino
The problem is that a struct is handled as a value type, not as a reference type.

This means that a copy of _stop is made and put in btns (btns[3] actually).

So what you need to do is putting pointers into the btns array:

SCENARIO* btns[4] = { &amp;_red, &amp;_yellow, &amp;_white, &amp;_stop};


The symbol * denotes a pointer, and &amp; means the address of a variable (so it points to the variable and is not a copy).

Now when you change _stop, also btns[3] which points to _stop will show the correct initialized value.

For printing you should use:

Serial.println( (*btns[i]).LampPin);Serial.print(":");
Serial.println( (*btns[i]).PB_Pin );


Because *btns[i] is a pointer, but because this is a very often used feature, a special notation can be used:

Serial.print(btns[i]-&gt;Lamp_Pin);Serial.print(":");
Serial.println( btns[i]-&gt;PB_Pin);