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..


Anmelden zum Antworten