array??
-
Hallo Programmierer..........
struct Auto { char* name; double hi[1]; }; hi: ist ein Array vom Typ X structure struct X { double nr; };
Jetzt mache ich :
Auto myAuto; X myX[1]; myX[0].nr = 123; myAuto.name ...... //ist kein Problem myAuto.hi //<------ wie geht das?? also hi ist ein Array, aber 2. Komponente // von Auto ist double???
Ich danke Euch im Voraus
-
struct Auto { char* name; double hi[1]; }; hi: ist ein Array vom Typ X structure
Ich würde sagen hi ist ein Array mit einem Element vom Typ double
-
Original erstellt von Knuddlbaer:
Ich würde sagen hi ist ein Array mit einem Element vom Typ doublenein, hi ist ein Array von X structures.
Was heißt es, wenn in dem Auto struct steht: double hi[1];
ist Hi ein Array mit nur einem Element, oder ist es das 1. Element der Array hi (hier wäre nr) ??
-
hi ist bei dem Quelltext den Du postest definitiev kein struct X.
hi ist ein Datenmember der Struktur Auto und vom Typ double [] das 1 Element fassen kann.
-
Unterschied:
struct X { double nr; }; struct Auto1 { char* name; double hi[1]; //hi: ein array, das einen double wert aufnehmen kann. }; struct Auto2 { char* name; X hi[1]; //hi: ein array, das ein X aufnehmen kann }; //Zugriff: int main () { Auto1 eins; Auto2 zwei; eins.hi[0] = .1; //weise dem 1. element im array vom typ double den wert 0.1 zu zwei.hi[0].nr = .2; //weise dem double des ersten elements vom typ X im array den wert 0.2 zu }
Wenn du ein Array in einer Klasse/Struktur oder sonstwo deklarierst, dann gibst du in den eckigen klammern die anzahl der elemente an, die es fassen kann.
-
wie ich sehe, habt Ihr alle das gleiche Problem wie ich
das folgende habe ich aus der Seite geholt:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/qos/qos/qos_diffserv.aspich möchte so ein Object erzeugen:
typedef struct _QOS_DIFFSERV {
QOS_OBJECT_HDR ObjectHdr;
ULONG DSFieldCount;
UCHAR DiffservRule[1];//<--------merke hier (1)
} QOS_DIFFSERV, *LPQOS_DIFFSERV;DiffservRule : Array of QOS_DIFFSERV_RULE structures.
nun QOS_DIFFSERV_RULE :
typedef struct _QOS_DIFFSERV_RULE {
UCHAR InboundDSField;
UCHAR ConformingOutboundDSField;
UCHAR NonConformingOutboundDSField;
UCHAR ConformingUserPriority;
UCHAR NonConformingUserPriority;
} QOS_DIFFSERV_RULE, *LPQOS_DIFFSERV_RULE;also bei (1): wie kann DiffservRule ein Array von QOS_DIFFSERV_RULE und den Typ UCHAR sein??
[ Dieser Beitrag wurde am 07.07.2003 um 23:07 Uhr von mnab editiert. ]
-
DiffservRule ist ein Array von UCHAR (von einem).
die beiden Strukturen stehen in keiner Beziehung zueinander.
willst du vielleicht DiffservRule zu einem QOS_DIFFSERV_RULE machen?
dann einfach UCHAR mit QOS_DIFFSERV_RULE austauschen.
beides gleichzeitig kann DiffservRule nicht ssein, außer du verwendest unions
-
Original erstellt von davie:
DiffservRule ist ein Array von UCHAR (von einem).
die beiden Strukturen stehen in keiner Beziehung zueinander.
willst du vielleicht DiffservRule zu einem QOS_DIFFSERV_RULE machen?
dann einfach UCHAR mit QOS_DIFFSERV_RULE austauschen.
beides gleichzeitig kann DiffservRule nicht ssein, außer du verwendest unionsDie Strukturen habe ich aber nicht selber erzeugt, das ist alles in der URL, und was mich wundert ist der Satz: "DiffservRule : Array of QOS_DIFFSERV_RULE structures"
Der Compiler meckert die ganze Zeit
-
musst du casten. hab ich auch schonmal gesehen. die daten werden halt als char* uebergeben. weiss grad nicht mehr, warum die den trick mit dem einelementigen array gemacht haben, gab aber einen grund.