Forum: Compiler & IDEs Strucktur in Funktion verändern


von Toralf W. (willi)


Lesenswert?

Hallo,
habe folgende Frage an die C Experten.

ich habe eine Struktur:
1
struct test
2
{
3
  uint8_t a;
4
  uint8_t b;
5
  uint8_t c;
6
} test_a, test_b;
7
8
struct test test_a = {1,1,1};
9
struct test test_b = {2,2,2};

die ich einer Funktion übergeben und dort verändern möchte:
1
void myfunktion (struct test data)
2
{
3
  data.a = 4;
4
  data.b = 4;
5
  data.c = 4;
6
}
Aufruf der Funktion:
1
myfunktion ( test_a);

wenn ich die Funktion verlasse, sind dann die Änderungen auch in test_a 
oder müsste ich dafür einen Zeiger auf test_a übergeben?

Gruß Willi

von Nachtaktiver (Gast)


Lesenswert?

Du musst natürlich einen Zeiger übergeben damit du direkt auf den 
Speicherinhalt der Struktur zugreifst und diesen gezielt verändert.

Wenn du der Funktion die Struktur übergibst handelt es sich dabei nur um 
eine Kopie der Struktur und die Veränderung findet nur lokal innerhalb 
der aufgerufenden Funktion statt.

von UR-Schmitt (Gast)


Lesenswert?

Genau das ist der klassische Fall warum man Zeiger benutzt.

von Toralf W. (willi)


Lesenswert?

o.k. Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.