char pointer auf structs zeigen lassen
-
Beide Varianten sind unlogisch.
gargamel schrieb:
Mystruct *x; char buf[256]; x=&buf;
1. sind die Typen nicht kompatibel und 2. ist buf bereits die Anfangsadresse des Arrays.
oder so???
Mystruct x;
char buf[256];
x=(Mystruct*)&buf;
[/cpp]Du versuchst die Adresse eines char Pointers einer normalen Variablen zuzuweisen. Das kann nicht gehen.
aber irgentwie spinnt der compiler bei beiden varitionen!!!
Jaja, immer isses der Compiler
-
der char buf soll aber auf die struktur zeigen
-
und wie kann ichs dann machen
-
und wie kann ichs dann machen
-
char buff[256]; MyStruct *x = (MyStruct*)buff;
-
gargamel schrieb:
und wie kann ichs dann machen
So garnicht.
Erstens sind deine char bufs statische Arrays, die auf nichts anderes zeigen können! (Quasi char * const buf)
Wenn überhaupt, dann per Pointer auf char und per expliziter Zeigerkonvertierung (ich bezweifle, dass dich das weiterbringt). Das würde dann so aussehen:char *p = (char*)&m;
Edit: In C gibts ja gar kein reinterpet_cast<>
-
net schrieb:
char buff[256]; MyStruct *x = (MyStruct*)buff;
Der Puffer soll aber auf die Struktur zeigen und nicht umgekehrt
-
machts doch nicht so kompliziert ...
struct MyStruct m; char *p = (char*)&m;
bzw. direkt (wenn ich das richtig verstanden habe soll die ja übers Netz gehen):
struct MyStruct m; send(the_socket, (char*)&m, sizeof m, 0);
Möglicherweise ist der Cast sogar überflüssig in C, bin mir nicht ganz sicher.
-
interpreter schrieb:
Der Puffer soll aber auf die Struktur zeigen und nicht umgekehrt
so sehen die codes aus dem ersten posting aber nicht aus.
dann eben so:MyStruct m; char *buff = (char*)&m;
aber bei sowas u.ä. immer dafür sorgen dass struct-member alignment auf 1 byte eingestellt ist
-
ich dank euch allen jetzt klappts wunderbar
mfg gargamel