struct attribute zuweisung
-
Hallo kann mir mal jemand erklären wieso das nicht funktioniert?
#include <stdio.h> #include <stdlib.h> #include <string.h> struct Animal { char name[1000]; unsigned short legs; unsigned int weight; signed int discovered; }; void init_animal(char* _name, unsigned short _legs, unsigned int _weight, signed int _discovered, struct Animal* _animal) { *_animal.legs = 10; }
_animal wird doch als pointer übergeben wenn ich dann mit * Operator dereferenziere und auf legs zugreife müsst es doch normalerweise gehen oder?
lg
-
von der logik ist der code richtig, aber der . operator hat eine höhere priorität
als der * operator. deshalb musst du klammern setzen:(*_animal).legs = 10;
oder du nimmst den viel schöneren -> operator, bis aus die syntax ist er identisch
mit dem obrigen:_animal->legs = 10;
-
helferlein schrieb:
von der logik ist der code richtig, aber der . operator hat eine höhere priorität
als der * operator. deshalb musst du klammern setzen:(*_animal).legs = 10;
oder du nimmst den viel schöneren -> operator, bis aus die syntax ist er identisch
mit dem obrigen:_animal->legs = 10;
das -> funktioniert aber nur wenn ich _animal als zeiger belasse oder?
ist der -> operator gleichbedeutend wie -> in c++ ? also alle zeiger auf objekte kann ich irgendwie so -> ansprechen ?
-
Demnächst bitte Antworten lesen, bevor neue Fragen gestellt werden.
helferlein schrieb:
..bis aus die syntax ist er identisch
mit dem obrigen..Das heißt
(1)
(*a).
ist identisch mit
(2)
a->
Und genauso wie bei (1) muss demnach auch bei (2) a ein Zeiger sein..