Verschiedene struct Variablen in Funktion ändern

Hallo zusammen,
ich steh seit gestern auf den Schlauch und finde im Netz auch keine Lösung.
Ich möchte verschiedene Variablen einer selbst erstellten struct in einer void Funktion ändern
Als verkürztes "einfaches" Beispiel:

struct Zahl {
    int nummer = 0;
 };

Zahl z1;

void setup() {
  Serial.begin(9600);
  Serial.print("z1:");
  Serial.println(z1.nummer);
}

void loop() {
nummerhoch(z1);
  Serial.print("z1:");
  Serial.println(z1.nummer);
}

void nummerhoch(Zahl i) {
i.nummer=1;
}

Muss dass über eine extra class mit Speicherfunktionen erfolgen oder gibt es eine leichtere Lösung?

Schon mal vielen Dank für eure Zeit!

deine Struktur hat eine Variable.
Du änderst sie mit

z1.nummer=1;

dein

z1.nummer=1;

kann auch in einer Funktion stehen.

was willst du nun genau machen?

Ich möchte einer Funktion eine Variable einer Struct übergeben z.B. z1;
Die Funktion wertet einen Sensor aus und soll den Wert in z1.nummer speichern;
Im Beispiel ist der Sensor weg gelassen worden

struct Zahl {
  int nummer = 0;
};

Zahl z1;

void setup() {
  Serial.begin(9600);
  Serial.print("z1:");
  Serial.println(z1.nummer);
}

void loop() {
  nummerhoch(z1);
  Serial.print("z1:");
  Serial.println(z1.nummer);
}

void nummerhoch(Zahl &i) {
  i.nummer++;
}

sowas?

Call by value vs call by reference.
Müsstest mal eben googlen.
Du erwartest dass deine funktion die globale z1 verändert?

Euch beiden Danke für die schnelle Antwort
Call by value vs call by reference...
Der Klassiker
Das &_Zeichen war die Lösung
Vielen Dank

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.