/*
Forum: https://forum.arduino.cc/t/trying-to-assign-an-object-to-an-array-index/1424700/20
Wokwi: https://wokwi.com/projects/452946744498618369
ec2021
*/
struct GoB_Sensor
{
int id = 0;
};
void setup() {
Serial.begin(115200);
GoB_Sensor mySensor;
mySensor.id = 1;
// Create a copy of mySensor
GoB_Sensor sensorArray[1];
sensorArray[0] = mySensor;
Serial.println("----------------------------------");
Serial.println("State when assigned to sensorArray");
printValues(mySensor.id, sensorArray[0].id);
// Change the id now
mySensor.id = 9;
Serial.println("----------------------------------");
Serial.println("State after changing mySensor.id");
// Changing mySensor.id does not affect the array entry
printValues(mySensor.id, sensorArray[0].id);
Serial.println("----------------------------------");
// Reset the id and create a Pointer Array
mySensor.id = 1;
GoB_Sensor* pointerArray[1];
pointerArray[0] = &mySensor;
Serial.println("----------------------------------");
Serial.println("State when assigned to pointerArray");
printValues(mySensor.id, pointerArray[0]->id);
//Change the id now
mySensor.id = 9;
// Changing mySensor.id does now affect the array entry
Serial.println("----------------------------------");
Serial.println("State after changing mySensor.id");
printValues(mySensor.id, pointerArray[0]->id);
}
void loop() {
// put your main code here, to run repeatedly:
}
void printValues(int id1, int id2) {
Serial.print("mySensor.id = ");
Serial.println(id1);
Serial.print("Array Entry = ");
Serial.println(id2);
}