Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Probleme mit Zeigern auf Arrays von Strukturen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.08.2003, 12:56 Uhr
~Sockel7
Gast


Hallo zusammen,

ich habe ein Problem mit der Übergabe von meinen Struct-Arrays an eine Funktion.
Der Pseudo-Code sieht in etwa so aus:

C++:
struct gas; //Datentyp, Deklaration etc.
{
}
gas z[4]; //Initialisierung von einer beliebigen Anzahl von Elementen


Wie kann ich jetzt ein Zeigerarray erzeugen, sodaß ptr[1] auf z[1], ptr[2] auf z[2] etc. zeigt?

Vielen Dank im voraus.

--edit: cpp-tags eingefügt. Denk nächstes mal selbst dran.

Dieser Post wurde am 11.08.2003 um 13:20 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.08.2003, 13:16 Uhr
virtual
Sexiest Bit alive
(Operator)



C++:
gas z[4];
gas* ptr[4];
for(int i=0; i<4; i++) ptr[i] = gas+i;


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 11.08.2003 um 13:20 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.08.2003, 13:22 Uhr
0xdeadbeef
Gott
(Operator)


@virtual: gas ist kein Zeiger, du meinst z. Abgesehen davon finde ich

C++:
for(int i = 0; i < 4; ++i) ptr[i] = &z[i];


übersichtlicher, aber das ist Geschmackssache.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.08.2003, 13:26 Uhr
~Sockel7
Gast


Sieht gut aus, kommt aber Fehler :"Improper use of typedef "gas" in main()!"

Ich mach das bis jetzt so:

C++:
gas z[4];
gas* ptr;
ptr = &z[1];
crossection(ptr, x, y);


Das muß durch die große Anzahl von Elementen, die in dem Programm vorkommen werden, in etwa so aussehen:

C++:
gas z[4];
gas* ptr[4];
ptr[i] = &z[i]; (i = 1..4)
crossection(ptr[i], x, y);


Die Übergabe und Initialisierung funktioniert aber nicht.
Mein Hauptproblem besteht also in der Übergabe in die Funktion.

--Also, das mit den cpp-Tags funktioniert so: Bevor der Code anfängt, [ cpp ] (nur ohne Leerzeichen) schreiben, danach [ /cpp ]. Dann hast du den Code schön formatiert, und die Leute verstehen auch, was du meinst.

Dieser Post wurde am 11.08.2003 um 13:28 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.08.2003, 13:29 Uhr
~Sockel7
Gast


Vielen Dank @Oxdeadbeef und virtual. Funktioniert jetzt!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.08.2003, 13:31 Uhr
0xdeadbeef
Gott
(Operator)


i muss von null bis drei laufen. Arrays sind in C null-basiert. Das ist nicht das, worüber dein Compiler sich beschwert, es würde dir aber nachher Probleme machen.

Wie ist gas definiert?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.08.2003, 13:35 Uhr
~Sockel7
Gast


In gas sind massen Arrays, für Bindungsenergien, Ionisationsenergien, Massen, Name des Elements etc.

Das mit dem nullbasiertem Array hab ich jetzt auch implementiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: