"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

C++: Dynamische Arrays

vossi 12.10.2003 - 21:07 1580 23
Posts

PuhBär

Schau ned so genau
Avatar
Registered: Sep 2002
Location: .
Posts: 1237
wennst ein array zur laufzeit dimensionieren willst machsd:

WeinTypeRecord* weinType = (WeinTypeRecord*)malloc(anzahl);

wennst es schon vorm kompilieren weisst dann:

WeinTypeRecord winType[20];


redimensionieren dann mit: "realloc()"


UND, nach gebrauch unbedingt mit: "free(weinType)"
evtl. vorher noch auf NULL-pointer überprüfen


EDIT:
ok, die [] in da 1en zeile warn crap
Bearbeitet von PuhBär am 14.10.2003, 13:00

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
ich danke dir edler puhbär :)
endlich bringt jemand licht in die sache :)

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Nur dass es absolut scheußlich ist, sowas in C++ zu machen, und obendrein sind allein in dieser einen Zeile 2 Fehler. Also hör bitte nicht auf ihn und mach's mit der STL.

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
ich hab aber keine STL :rolleyes:

#include <vector> haut nicht hin

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
http://www.sgi.com/tech/stl/download.html

gcc hat eine eigene stl, aber die is ziemlich schwach.

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
ich machs jetzt schon mit einer doppelt verketteten liste.

Aber ich habe ein riesen Problem .. die speicherbereiche in denen ich abspeichere weren überschrieben und ich kann keine Strings mehr machen (zu doof oder so :P)

kann mir jemand auf die Sprünge helfen? Wie initiere und befülle ich eine char* (oder char *) variable und WAS ist der unterschied zwischen

char* bla;
char *bla;

und die letzte doofe Frage .. wie initiere ich in C++ objekte einer Klasse? gleich wie in Java? "Class object = new Class(...);" oder anders?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
Zitat
Wie initiere und befülle ich eine char * variable

char *szBuffer = new char[10] // -> 10 Bytes werden initialisiert

memcpy, strcpy (sowie viele andere stringfunktionen)

zB strcpy(szBuffer,"Inhalt");

delete [] szBuffer; // -> delete niemals vergessen.. [] weil du mehrere chars intialisiert hast

Zitat
.. wie initiere ich in C++ objekte einer Klasse?
genauso wie einen string..

CMyClass *pMyClass = new CMyClass(/* Constructor Parameter hier */); // delete nicht vergessen.. diesmal ohne []

oder:

CMyClass MyClass(/* Constructor P... */);

.. Destructor wird dann nicht über delete sondern beim verlassen des raumes (grrr.. schlechtes wort, hab kein besseres parat) - lokal, oder global - automatisch aufgerufen.

Zitat
char* bla;
char *bla;

gibt keinen..

------------

deine fragen hören sich so an, als würdest du c++ lernen wollen. ich rate dir ein buch durchzuackern.. dann hast du ein gutes basiswissen und kannst versiertere fragen stellen.

viel erfolg,
mat

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
danke .. ich konnte das schon mal aber nach jahren java und php vergisst man es einfach wieder.

bin froh wenn ich das hinter mir habe :)

PuhBär

Schau ned so genau
Avatar
Registered: Sep 2002
Location: .
Posts: 1237
@ringding:
stimmt, bei objekten sind vektoren hübscher

malloc is halt a klassiker bei char buffern...

poste halt codebeispiele wies richtig geht, dann haben so n00bs wie ich keine chance crap zu posten
Bearbeitet von PuhBär am 14.10.2003, 13:15
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz