Strukturen und Zuweisungsoperator



  • in meinem Buch steht:

    Man kann vor allem eines mit struct-Variablen nicht tun: Man kann sie nicht direkt in Zuweisungen verwenden! Das folgende Konstrukt ist also ungültig:

    struct Address my_addr;
    struct Address your_addr;
    //... initializing my_addr here;
    your_addr = my_addr; // not allowed!!!!
    

    stimmt das? mein Compiler macht keine Beanstandungen wenn ich es torzdem versuche:

    typedef struct
    {
    	int x;
    	int y;
    } coord;
    
    coord foo(void)
    {
    	coord tmp;
    	tmp.x = 10;
    	tmp.y = 20;
    	return tmp;
    }
    
    int main(int argc,char *argv[])
    {
    	coord x = foo();
    	coord y = x;
    	printf("%d, %d\n", x.x, x.y);
    	printf("%d, %d\n", y.x, y.y);
    }
    

    ich vermutte mal das sowas nur mein Compiler kann und das nicht dem Standard entpsricht - oder?



  • Das geht, wenn für alle Members der Kopiervorgang definiert ist.



  • für welche Members ist der Kopiervorgang nicht definiert? - ich nehm mal an das ding macht immer ne flache Kopie - oder?



  • Walli schrieb:

    Das geht, wenn für alle Members der Kopiervorgang definiert ist.

    Das ist im Kontext von C eine sinnlose Feststellung, für welche Members soll das denn nicht der Fall sein? 😉

    Vertexwahn: Ohne mich jetzt im Standard zu vertiefen: Meines Wissens wurde struct-Zuweisung und -Wertübergabe ca. 1978 in den K&R-Compiler aufgenommen und dürfte daher auch in ANSI-C zu finden sein.



  • Bashar schrieb:

    Walli schrieb:

    Das geht, wenn für alle Members der Kopiervorgang definiert ist.

    Das ist im Kontext von C eine sinnlose Feststellung, für welche Members soll das denn nicht der Fall sein? 😉

    Ach sch..., hab wieder geträumt 😉 . Meine Feststellung bezog sich natürlich auf C++ und ist somit in diesem Forum fehl am Platze.


Anmelden zum Antworten