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.