Zugriff auf Daten in einer struct
Ich für den Zugriff auf Informationen in einem struct, wenn jemand kann mir helfen hier.
typedef struct {
int time;
char sat,rcv;
char LLI [3];
} obsd_t;
typedef struct {
obsd_t *data;
} obs_t;
Ich habe so etwas wie
obs_t obs;
int x;
Nun will ich weisen Sie x den Wert der Zeit in obsd_t also, was soll ich tun. Ist so etwas wie das richtig
x=obs.data.time;
p.s ich sah über die anderen threads stackoverflow konnte aber nicht verstehen, aus es. Einige haben nicht jede akzeptierte Antwort, so war ich ungern
- Was passiert, wenn Sie versuchen, die?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mischen Sie einen Zeiger mit einer variable. Verwenden
.
Betreiber für struct-Variablen (z.B. obs) und verwenden->
für Hinweise (z.B. für Daten)d.h.
x = obs.data->time
oder Sie können auch verwenden, wie dies vorgeschlagen von Yu Hao
x = obs.(*data).time
Brauchen Sie nur, es zu tun mögen dieses:
(Dies wird vorausgesetzt natürlich, dass Sie initialisiert
obs.data
auf eine gültige Instanz desobsd_t
.)Sollten Sie diese stattdessen zu verwenden:
weil
data
imobs_t
ist ein Zeiger.Im Allgemeinen davon ausgehen
strcut foo* p;
dann Zugriff auf elementbar
imstruct foo
und
sind die gleichen
data
ist ein Zeiger auf eineobsd_t
struct. Verwenden Sie den operator->
statt.
Zugriff auf die Elemente einer Struktur verwiesen, die durch einen Zeiger:Wenn Sie wollen, um den Zugriff auf die Struktur wie diese:
x=obs.data.time;
müssen Sie deklarieren Ihreobs_t
anders, so:Bitte machen Sie sich vertraut mit, wie Zeiger funktionieren, so dass Sie vermeiden können, solche Probleme in der Zukunft.
Zugang zu den
data
als Zeiger zu einer Struktur mit->
Betreiber:oder
Zugang zu den Adresse der
data
mit*
operator (die Dereferenzierung der Zeiger):Beide Varianten sind richtig.
Lesen Sie diese für mehr detailes: Zeiger und Strukturen