Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
VerruecktesHuhn Super JLI'ler

Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 09.08.2002, 09:30 Titel: Zugriff auf Strukturen in Feldern? |
|
|
Hi, ich hab ein Problem (sonst würd ich wohl kaum ein neues Thema erstellen). Und zwar hab ich eine Struktur geschrieben und ein Feld mit mehreren Variablen der Struktur angelegt. Wie kann ich jetzt aber das gesamte Feld durchlaufen und dabei also auf immer denselben Wert zugreifen. Zum Beispiel:
Code: |
struct BeispielStruktur
{
bool BeispielWert;
}
BeispielStruktur BeispielStrukturFeld[10];
for(int i = NULL; i<10; i++)
{
//Greife auf BeispielStruktur.BeispielWert zu und kucke ob true oder false.
}
|
Wie muss ich jetzt den Kommentar in Quellcode umwandeln? |
|
Nach oben |
|
 |
Michael JLI'ler
Anmeldedatum: 20.07.2002 Beiträge: 173 Wohnort: Münster / NRW Medaillen: Keine
|
Verfasst am: 09.08.2002, 10:11 Titel: |
|
|
Was meinst du mit 'immer auf den selben Wert zugreifen'?
Ich würde sagen, dies löst dein Problem:
Code: |
struct BeispielStruktur
{
bool BeispielWert;
}
BeispielStruktur BeispielStrukturFeld[10];
for(int i = NULL; i<10; i++)
{
if(BeispielStrukturFeld[i].BeispielWert == true) // mach irgendwas
}
|
Oder meinst du was anderes? _________________ Es geht auch ohne  |
|
Nach oben |
|
 |
VerruecktesHuhn Super JLI'ler

Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 09.08.2002, 11:45 Titel: |
|
|
Genau das meinte ich, wusste nur nicht das der punkt-operator da auch funzt. |
|
Nach oben |
|
 |
Revil Senior JLI'ler

Anmeldedatum: 28.07.2002 Beiträge: 242
Medaillen: Keine
|
Verfasst am: 09.08.2002, 13:40 Titel: |
|
|
irgendwie versteh ich nicht ganz was strukturen machen, bzw was sie einem bringen... Kann mir vielleicht mal einer erklären wozu man ne Struktur normalerweise verwendet? |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 09.08.2002, 14:50 Titel: |
|
|
Man benutzt Strukturen, um Daten logisch zusammenfassen zu könne.
Beispiel:
Ein Objekt hat Koordinaten, Lebenspukte und Munition. Ohne Strukturen würde das so aussehen:
Code: |
#define MAX_OBJS
int x[MAX_OBJS];
int y[MAX_OBJS];
int health[MAX_OBJS];
int ammo[MAX_OBJS];
|
mit Struktur so:
Code: |
struct OBJ_TYPE
{
int x;
int y;
int health;
int ammo;
};
OBJ_TYPE objekte[MAX_OBJS];
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Revil Senior JLI'ler

Anmeldedatum: 28.07.2002 Beiträge: 242
Medaillen: Keine
|
Verfasst am: 09.08.2002, 18:27 Titel: |
|
|
aber ist ne klasse dazu nicht viel besser geeignet? |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 09.08.2002, 18:45 Titel: |
|
|
In diesem Falle vielleicht, obwohl man auch innerhalb der Klasse dann auf Strukturen zurückgreifen kann.
Strukturen haben aber auch noch andere Vorteile. Denke dir z.B. eine Funktion, die die aktuelle Position eines Raumschiffes zurückgeben soll:
Normalerweise würdest du das jetzt so programmieren:
Code: |
int GetPosX(int id) {
//... Anhand von id das Raumschiff ermitteln, das gemeint ist
return XPosition;
}
int GetPosY(int id) {
// Code erspare ich mir hier
return YPosition;
}
|
Mit einer Struktur kannst du das ganze auch zusammenfassen:
Code: |
typedef struct {
int x;
int y;
} TPos;
void GetPos(int id, TPos *Position) {
Position->x = RechneWertVonPositionXAus(i);
Position->y = RechneWertVonPositionYAus(i);
}
|
Das ganze wird dann folgendermaßen verwendet:
Code: |
int main(void) {
TPos xy;
GetPos(1234, &xy);
printf("Raumschiff 1234 befindet sich an %d, %d\n", xy.x, xy.y);
return 0;
}
|
Ich hoffe, daß ich dich nicht zusehr verwirrt hab.
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
Revil Senior JLI'ler

Anmeldedatum: 28.07.2002 Beiträge: 242
Medaillen: Keine
|
Verfasst am: 09.08.2002, 19:01 Titel: |
|
|
ah danke, ich glaub ich habs verstanden
also im endeffekt ermöglichen strukturen nur ein logischeres Speichern der Daten, werden aber nicht wirklich benötigt... Oder gibts irgendwas was man ned ohne Strukturen lösen könnte? |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 10.08.2002, 21:24 Titel: |
|
|
Selber lösen kann man alles auch ohne Strukturen, aber allein schon in der Windows-API und auch in DirectX wird sehr viel mit Strukturen gearbeitet...
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
Michael JLI'ler
Anmeldedatum: 20.07.2002 Beiträge: 173 Wohnort: Münster / NRW Medaillen: Keine
|
Verfasst am: 11.08.2002, 09:49 Titel: |
|
|
Ich mach das immer so, dass ich eine struktur da nehme, wo ich nur die daten brauche und keine methoden implementieren will. man kann zwar einer struktur auch methoden geben, aber da kann man eine klasse besser nehmen. _________________ Es geht auch ohne  |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 11.08.2002, 12:21 Titel: |
|
|
Zitat: |
[...]aber da kann man eine klasse besser nehmen.
|
In C++ bewirken 'struct' und 'class' das gleiche! Also ist es total egal was man nimmt  _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
VerruecktesHuhn Super JLI'ler

Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 11.08.2002, 13:33 Titel: |
|
|
ber bei Strukturen kann man glaub keine Vererbung machen... |
|
Nach oben |
|
 |
Sören JLI Master Trainee

Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 11.08.2002, 15:23 Titel: |
|
|
Polymorphie nicht zu vergessen!  |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 11.08.2002, 16:21 Titel: |
|
|
In C, wo es ja keine Klassen gibt, sind Strukturen aber ein sehr angenehmes Mittel zum Zweck. Da ich mit C angefangen hab, benutze ich noch sehr häufig Strukturen, wenn andere schon Klassen nehmen.
AFE-GmdG
PS.: Wenn mich nicht alles täuscht, lassen sich strukturen etwas schneller verarbeiten, sie haben nicht so viel Overhead wie Klassen, da sie wie schon gesagt keine Polimorphie und Vererbung beherrschen. _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
DaN00b JLI'ler

Anmeldedatum: 10.08.2002 Beiträge: 159
Medaillen: Keine
|
Verfasst am: 12.08.2002, 10:08 Titel: |
|
|
wenn jetzt eh schon so viel zu klassen und structs gesagt wurde hab ich jetzt noch ne kleine frage zu klassen
kann ich ein feld von einer klasse machen und aber dem feld dann vererbte klassen übergeben?
Code: | //mal ein beispiel an tieren :P
Tier* TierFeld[3];
TierFeld[1] = Katze();
TierFeld[2] = Hund();
TierFeld[3] = Schwein();
//und gleich zusatzfrage falls es geht: bekomm ich dann auch
//jeweils einen zeiger auf das gewünschte tier damit ich auf dessen
//methoden zugreifen kann? Beispiel:
TierFeld[1]->Fressen(); |
|
|
Nach oben |
|
 |
|