Neuling hat Fragen



  • Hi, hi

    😕 Ich fing vor kurzem mit Visual C++ an und habe daher einige Fragen. 😕

    1. Void:

    void  Irgendwas
    

    Was genau bedeutet dieses void? Sprich, für was wird es verwendet?

    2. Zeiger:
    Wo liegt darin der unterschied und für was wird es jeweils verwendet?

    char* cGröße = "Groß";
    

    Ich glaube das wird u.a. für die Argumentübergabe per Adresse genutzt - und für was noch?

    char cGröße = *pchar;
    *pchar = "Groß";
    

    3. Stack:
    Ich weiß zwar wie man etwas in dem Heap-Speicher ablegt, aber nicht auf den Stack, oder werden die Variablen dort automatisch abgelegt?

    4. Klassen:
    Kennt einer von euch eine Site wo Klassen sowie Member-Variablen und -Funktion erklärt werden. Also was das genau ist und nicht wie man sowas erstellt.

    ➡ Ich hoffe ihr könnt mir helfen! 🙄



  • FUNPAQ schrieb:

    Ich fing vor kurzem mit Visual C++ an und habe daher einige Fragen.

    Das heißt C++, nicht Visual C++. Visual C++ ist eine IDE (Integrierte Entwicklungs-Umgebung) und keine Sprache.

    FUNPAQ schrieb:

    1. Void:

    void  Irgendwas
    

    Was genau bedeutet dieses void? Sprich, für was wird es verwendet?

    Das void in dem Code ist falsch, da man keine Variable vom Typ void erstellen kann. Wenn aber der Rückgabewert einer Funktion void ist, heißt dass, das sie nichts zurückgibt.

    FUNPAQ schrieb:

    2. Zeiger:
    Wo liegt darin der unterschied und für was wird es jeweils verwendet?

    char* cGröße = "Groß";
    

    Ich glaube das wird u.a. für die Argumentübergabe per Adresse genutzt - und für was noch?

    Das muss "const char*" oder "char[]" heißen, "char*" ist nicht ganz korrekt. const char* ist ein Zeiger auf einen odere mehrere Zeichen. Man benutzt ihn zur Darstellung von Zeichenketten.
    Was ein Zeiger ist, sollte dir dein C++ Buch beantworten können. In C++ benutzt man aber fast immer den Typ std::string anstelle von char*.

    FUNPAQ schrieb:

    char cGröße = *pchar;
    *pchar = "Groß";
    

    Dieser Code ist auch nicht ganz korrekt.
    Unter der Voraussetzung, dass pchar vom Typ "char*" ist, enthält cGröße (übrigens kein gültiger Variablenname) das erste Zeichen des Strings. cGröße ist ein char, kann also nur ein einziges Zeichen halten.

    Wenn pchar aber "char*" ist, ergibt *pchar "char". Einem char kann man keinen String wie "Groß" zuweisen, daher funktioniert der Code nicht.

    FUNPAQ schrieb:

    3. Stack:
    Ich weiß zwar wie man etwas in dem Heap-Speicher ablegt, aber nicht auf den Stack, oder werden die Variablen dort automatisch abgelegt?

    Jede Variable liegt erst mal grundsätzlich auf dem Stack, solange du nichts anderes angibst.

    FUNPAQ schrieb:

    4. Klassen:
    Kennt einer von euch eine Site wo Klassen sowie Member-Variablen und -Funktion erklärt werden. Also was das genau ist und nicht wie man sowas erstellt.

    Thinking in C++ (allerdings Englisch).



  • 1. void steht für "nichts" "kein Typ" und wird meistens als "Rückgabetyp" für Funktionen benützt die eben nichts zurückgeben:

    void ausgabe()
    {
        cout<<"Hallo";
    }
    [/code]
    ausgabe() gibt keinen Wert per return() zurück!
    
    2. Zeiger sind ein langes Kapitel für sich - sie zeigen auf einen Speicherbereich. Das Strings grundsätzlich in C/C++ als Zeiger auf Character behandelt werden ist eigentlich Nebensache. Du kannst also einen Zeiger auf einen Speicherbereich zeigen lassen - mit new kannst du ihn auf einen Speicherbereich am Heap zeigen lassen.
    
    Für Call by Reference werden in C++ eher Referenzen verwendet - Zeiger spielen allerdings immer noch bei Arrays eine Rolle.
    
    3. Am Stack wird alles abgelegt was du "normal" an Speicher anforderst, zB:
    [cpp]
    int Variable_am_Stack (0);
    
    int* Variable_zeigt_auf_Speicher_am_Heap = new int;
    

    4. Wie "was das genau ist?" - willst du mehr über objektorientiere Programmierung erfahren? Oder doch wie Klassen erstellt werden?

    BTW: Visual C++ ist keine Prorgammiersprache!

    Programmiersprache: C,C++,etc.
    Eventuell benützte Klassenbibliothek: MFC,VCL,etc.
    Compiler: MS Visual C++, Borland C++ Builder, gcc, etc.

    MfG SideWinder



  • @SideWinder:
    Doppelt hält besser. 😉



    1. Visual C++ ist keine Programmiersprache sondern eine Entwicklungsumgebung.
    2. void bedeutet soviel wie "nichts".
    3. Pointer: FAQ ansehen.
    4. Jein. Wenn du ein Objekt nicht mit new erzwugst wird es in der Regel auf dem Stack abgelegt ansonsten auf dem Heap. Auch Argumente bei einem Funktionsaufruf kommen nach auf den Stack.
    5. Guck dir mal ein gutes Tutorial zu C++ an.

    EDIT: Naja, ich denke langsam reicht es mit Erklärungen... 😃



  • FUNPAQ schrieb:

    Was genau bedeutet dieses void? Sprich, für was wird es verwendet?

    'void' ist ein Datentyp, der keine Elemente hat (d.h. es gibt keine Werte vom Typ void). Man verwendet void in 2 Situationen:

    1. Eine Funktion, die keinen Wert zurückliefert: void funktion() { ... }
    2. Ein Zeiger auf einen beliebigen Typ: void *p; p kann jetzt die Adresse jedes beliebigen Objekts aufnehmen, aber um an das zu kommen, worauf p zeigt ("dereferenzieren"), muss p erst wieder in einen Zeiger auf den richtigen Typ umgewandelt werden. void-Zeiger sind in sauberem C++ aber eher unüblich.

    2. Zeiger:
    Wo liegt darin der unterschied und für was wird es jeweils verwendet?

    Unterschied wozwischen?

    char* cGröße = "Groß";
    

    Ich glaube das wird u.a. für die Argumentübergabe per Adresse genutzt - und für was noch?

    z.B. Dynamische Datenstrukturen (Listen, Bäume, ...)

    3. Stack:
    Ich weiß zwar wie man etwas in dem Heap-Speicher ablegt, aber nicht auf den Stack, oder werden die Variablen dort automatisch abgelegt?

    Funktions-lokale Variablen (Speicherklasse "auto") werden oft auf dem Stack abgelegt (Register wären auch möglich), aber das ist eigentlich uninteressant -- wichtig ist, dass sie beim verlassen ihres Gültigkeitsbereiches "auto"matisch zerstört werden.

    Die 4. Frage ist ein wenig zu allgemein, darüber schreiben andere Leute Bücher ... viel Spaß beim Lesen.



  • Besser gesagt dreifach hält besser 🙂

    @Mastah: Kürzer und dann auch noch letzter *tztztz* 😉

    wird es in der Regel auf dem Stack abgelegt ansonsten auf dem Heap.

    Wusste ich gar nicht, wann wird etwas noch auf dem Heap angelegt?

    Achja und ob Volkards Tutorial wirklich für "Was mach ich mit Klassen und OOP" so gut geeignet ist :).

    MfG SideWinder



  • Vierfach hält langsam aber, oder tippt noch jemand?



  • SideWinder schrieb:

    Besser gesagt dreifach hält besser 🙂

    Merkst' was? 😉

    SideWinder schrieb:

    MaSTaH schrieb:

    wird es in der Regel auf dem Stack abgelegt ansonsten auf dem Heap.

    Wusste ich gar nicht, wann wird etwas noch auf dem Heap angelegt?

    Es gibt außer dem Stack und dem Heap noch andere Speicherbereiche. Static-Variablen liegen auch nicht auf dem Stack und nicht auf dem Heap.
    Außerdem gibt es z.B. Thread Local Storage oder Shared Memory. Das ist dann aber in der Regel plattformabhängig.



  • cd9000 schrieb:

    Das ist dann aber in der Regel plattformabhängig.

    In welchem Forum bin ich denn hier? Im plattformabhängigem C++ Forum? Was ich gesagt habe sollte als kleine Erklärung aber völlig ausreichen 😉 .



  • Ich habe mein Posting verbessert und Static-Variablen aufgenommen.

    Dass die weder auf dem Stack noch auf dem Heap liegen, ist IMHO nicht plattformabhängig. Zufrieden? 🙂



  • Ja, wahrscheinlich weil im Standard nie von Stack oder Heap (ausser bei den entsprechenden Containern bzw. Algorithmen) die Rede ist.



  • 😮 Herzlichen Dank für die ganze Hilfe 😮
    Jetzt ist mir vieles wesentlich klarer. Den Rest schau ich dann nochmal im FAQ und/oder Buch nach.

    Noch kurz zum Buch. Ich benutze Visual C++ 6 Schritt für Schritt. Gibt es noch ein Buch welches ich für den Einstieg zusätzlich kaufen sollte?



  • Eins kaufen - fertig lesen ;). Das "Problem" an deinem Buch ist wohl das "Visual" davor. Ich vertrete die Meinung, dass man zuerst Standard C++ lernen sollte und dann auf die Windowsprogrammierung umsteigen sollte. Natürlich werden auch in deinem Buch zuerst die Standards besprochen und dann die "Visual-Prorgammierung" erklärt - trotzdem.

    Wenn du das Buch schon hast würde ich es erst einmal fertig lesen! Wenn du wirklich Standard-C++ lernen willst: "C++ lernen und professionell anwenden" von Peter Prinz und Ulla Kirch-Prinz ist sehr zu empfehlen.

    Danach weiter mit den 2 Büchren von Scott Meyers und dann musst du entscheiden was du machen willst ;).

    Tip: Wenn auf einem Buch "in 21 Tagen" draufsteht ist das die Zeit für die ersten 2 Kapitel 😃 ;).

    MfG SideWinder



  • 👍 Danke, dann werde ich mich mal wieder dransetzen und weiter arbeiten.


Anmelden zum Antworten