Strucktur in Funktion verändern

OP #2843042
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
Gast #2843049
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren