Typdef struct mit pointer?

Gast #2323322
Lesenswert?

Ich habe
1
typdef struct {
2
 uint8_t name;
3
 uint8_t vornamename;
4
} data;

data meine_struct;  <- muss ich dies machen oder kann man direkt auf 
data.name zugreifen?


Gibt es eine Möglichkeit, ohne die structure kopieren zu müssen diese in 
einer funktion zu verändern? Also Sprich die darin gespeicherten werte..
pointer?
1
void function(meine_struct) {
2
 meine_struct.name = 1;
3
}
Gast #2323327
Lesenswert?

Simon schrieb:
> Gibt es eine Möglichkeit, ohne die structure kopieren zu müssen diese in
> einer funktion zu verändern? Also Sprich die darin gespeicherten werte..

> pointer?
ja
1
void function(meine_struct* p) {
2
 p->name = 1;
3
}

oder wenn es c++ ist
1
void function(meine_struct& p) {
2
 p.name = 1;
3
}
Gast #2323328
Lesenswert?

>data meine_struct;  <- muss ich dies machen oder kann man direkt auf
>data.name zugreifen?

Die Frage verstehe ich nicht ganz. "data" ist der Typname (wie char oder 
int).

Du musst erstmal eine Variable mit diesem Typ anlegen. Z.B.
1
data x;

Dann kannst Du mit:
1
x.name = ...

auf die Mitglieder der Struktur zugreifen.

Mit "data.name" sagst Du nichts sinnvolles. Den data ist wiegesagt, ein 
Typ.

>Gibt es eine Möglichkeit, ohne die structure kopieren zu müssen diese in
einer funktion zu verändern?

Ja. Übergib der Funktion einen Zeiger auf eine Variable mit diesem Typ.
1
void function(data * meine_struct) {
2
 meine_struct->name = 1;
3
}
Gast #2323388
Lesenswert?

Vielen Dank!

kann mir einer sagen warum das in der Header Datei nicht geht?:
1
extern void rtcc_get_data(dat *p);

../datei.h:9: error: expected ')' before '*' token


In der .c Datei:
1
void rtcc_get_data(dat *p) { }
Gast #2323420
Lesenswert?

Beides wurde in der selben header Datei deklariert,
aber du hattest recht! ich habe die typedef unter der funktion 
deklariert.

Bedeutet das ich muss auf die Reihenfolge achten?
Gibts da andere Möglichkeiten?

So müsste ich quasi alle typedef sachen zuvor deklarieren?

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