Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Simple. Kann mir jemand struct's erklären?

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 ] [ 2 ] > 3 < [ 4 ]
020
26.02.2004, 10:03 Uhr
~Benny
Gast


Guten morgen !!

So. Malloc. Ich hab mir das angeschaut, aber ich bin da doch wieder auf fixe Zahlen angewießen oder?


C++:
int main(void)
{
   char *str;

   str = (char *) malloc(10); //string mit 10 feldern, ok.

   str = (char *) realloc(str, 20); //ich kann ihn vergrößern auf 20, aber kann ich auch
   //die 20 durch ne Variable ersetzen, sonst bringt mir das nicht wirklich was.
   //Ich will es ja nach bedarf erhöhen, aber nicht um was bestimmtes sondern um was variables

   return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
26.02.2004, 10:34 Uhr
stephanw
localhorst



Zitat:
Also C++ fällt bei mir schonmal weg, da ich erstmal C verstehen will bevor ich mich mit c++ beschäftige (zwecks schule auch).

Das ist meiner bescheidenen Meinung nach Quatsch. Warum nicht gleich die Vorteile von C++ genießen ? In C++ ist ein struct einfach eine class, bei der alle Elemente public sind. Den typedef kannst Du Dir schenken, indem Du dem Struct gleich einen Namen gibst:
C++:
struct Point2 {
  int x,y;
};
// kommt aufs gleiche raus wie
typedef struct {
  int x,y;
} Point2;


Da finde ich erstere Variante schöner
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
26.02.2004, 10:59 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@stephanw
also ich finds nicht so falsch sich erst mit c und dann mit c++ zu beschäftigen.
das ganze hilft einem unter umständen abläufe und probleme besser zu verstehen...
wers dann in c hinbekommt sollte dann mit c++ weniger probleme haben.


@Benny
klar musst du malloc sagen wieviel speicher du gerade brauchst.
dieses sogenannte nach bedarf allokieren läuft dann in etwa so ab

du hast z.b. wie gesagt 2 variable. die eine gibt dir an wieviel speicher reserviert ist und die andere wieviel davon belegt ist.


C++:
typedef struct{double x;double y;} my2dpoint;

my2dpoint* pointarray;
int anzahl, reserviert;
anzahl=0;

reserviert=10;//hier reservieren wir platz für 10 "punkte" im array
pointarray= (my2dpoint*) malloc(10*sizeof(my2dpoint));

...
//so jetzt willst du punkte ins array einfügen
//immer wenn du ein punkt einfügen willst musst du dann schauen ob reserviert grösser ist als anzahl wenn das nicht der fall ist musst du nachallokieren an sonsten kannst du einfügen
if(reserviert>anzahl){
   //punkt einfügen
   ++anzahl;//anzahl um eins erhöhen
}else{speicher ist dicht wir müssen also nachallokieren
  //realloc aufrufen mit zb. 10 mehr als bisher reserviert aufrufen
reserviert+=10;
}


//ach so am ende nicht vergessen den speicher wieder mit free freizugeben


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 26.02.2004 um 11:00 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
26.02.2004, 11:15 Uhr
stephanw
localhorst



Zitat:
also ich finds nicht so falsch sich erst mit c und dann mit c++ zu beschäftigen.
das ganze hilft einem unter umständen abläufe und probleme besser zu verstehen...
wers dann in c hinbekommt sollte dann mit c++ weniger probleme haben.


Aber viele Probleme lassen sich mit objektorientierter Programmierung lösen, zumidest wenn man versucht, die reale Welt in seinem Programm abzubilden. C++ unterstützt das wesentlich besser als C . Man kommt ja um C ohnehin nicht drumherum z.B. math.h & co. Aber gut, muss jeder selber wissen
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
26.02.2004, 11:28 Uhr
~Benny
Gast


Klar mit c++ kommt man weiter, aber ich kann auch nicht "mittendrin" anfangen. Wenn ich c++ mach, dann mach ich das auch nicht mehr auf konsolenebene, oder? Da arbeite ich dann mit borland visual c++.
Aber schlag euch meinetwegen nicht die köpfe ein.

Ich schreibe jetzt gerade mein Prog auf Structs um, wie gesagt, das dauert n weilchen, da es bestimmt an die 30 bis 40 functionen sind, aber danach werde ich mich mit malloc beschäftigen und euch wieder nerven.

so long...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
26.02.2004, 11:37 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Klar mit c++ kommt man weiter, aber ich kann auch nicht "mittendrin" anfangen.


das ist schwachsinn. mann kann auch alles mit c machen. Ist unter umständen ein wenig komplizierter aber eigentlich immer machbar.


Zitat:

Wenn ich c++ mach, dann mach ich das auch nicht mehr auf konsolenebene, oder? Da arbeite ich dann mit borland visual c++.


nö das hat nichts mit ner graphischen oberfläche zu tun. Graphische oberfläche ist halt ne bibliothek die man verwendet. Spielt aber keine rolle ob es nun c oder c++ ist (es kann nur sein dass man um die bibliothek zu verwenden ein c++-kompiler haben muss)


Zitat:

Aber schlag euch meinetwegen nicht die köpfe ein.


machen wir nicht. Es stimmt ja das man fast alles mit c++ einfacher haben kann.
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
26.02.2004, 11:53 Uhr
~Benny
Gast


Jetzt hab ich nochmal ne Frage zu structs.

wenn ich das struct an eine function übergebe übergebe ich ja nur einen pointer, klar. wenn ich diesen dann weitergebe an eine weiter function, worauf muss ich achten?


C++:
typedef struct {int a;} vmain;

void main ()
{ vmain pa;
  function (&pa);}

void function (vmain *fu)
{
function2 (pa);
}

void function2 (vmain fu2)
{}



denk ich da richtig?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
26.02.2004, 11:54 Uhr
~Benny
Gast


ups, fehler.


C++:
function2 (fu)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
26.02.2004, 11:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


musst auf nichts weiter auchten als auch schon vorher
main ist ja auch nur ne funktion aus der du andere heraus aufrufst.
Es gilt das selbige wie vorher


das geht nicht weil pa ja eine variable in der mainfunktion ist.
in function hast du einen pointer auf diese varible. du musst sie also mit fu ansprechen...
wenn die zweite funktion keinen pointer bekommen soll musst du fu bei der übergabe dereferenzieren

C++:
void function (vmain *fu)
{
function2 (*fu);
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 26.02.2004 um 11:58 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
029
26.02.2004, 12:42 Uhr
~Benny
Gast



C++:
typedef struct
        {
          int zahl1;
          int zahl2;
          int zahl3[2];
          char wort[20];
        }
        zahlen;

int summe (zahlen *euz_su);
int function (zahlen *euz_fu);

int main ()
{
zahlen euz;
summe (&euz);
return 0;}

int summe (zahlen *euz_su)
{
int summe;
scanf ("%s",euz_su->wort);

function (&euz_su);
return 0;}

void function (zahlen *euz_fu)
{printf ("%s",euz_fu->wort);}



Geht nicht, ich mach da wie so oft mal wieder was falsch. Hilfe. Danach bin ich mit dem Thema Structs aber durch. Hoffentlich
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ]     [ 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: