Templates,Zeiger,Referenzen



  • Hi,
    ich bin gerade in C++ eingestiegen.
    Was mir noch nicht so richtig klar ist ist das mit dem Templates,Zeiger und Referenzen.
    Also wann ich genau zeiger und referenzen neheme und wie ich die Templates richtig aufsetzte und einsetzte.
    Kann mir da vllt. jemand ne kleine Zusammenfassende Erklärung geben?
    MFG Steve



  • WINFO2105 schrieb:

    Kann mir da vllt. jemand ne kleine Zusammenfassende Erklärung geben?
    MFG Steve

    Kleiner und zusammenfassender als das Buch und/oder Onlinetutorial deiner Wahl wirds wohl kaum gehen. Gerade templates sind ein weites Feld über das es ganze Bücher gibt. Arbeite am besten zu den jeweiligen Themen ein oder zwei Bücher mitsamt entsprechenden Übungsaufgaben durch und wenn du wirklich spezifische Fragen hast werden die hier sicher beantwortet werden. Aber ein Rundumschlag durch alle drei Themen wird weder für dich noch denjenigen der ihn schreibt befriedigend sein, vor allem wenn man nciht weiß was du davon verstanden hast und was nicht.



  • Ja gut das verstehe ich.
    Bei Zeigern liegt zurzeit mein größtes Verständnissproblem.
    Wenn diese zum Beispiel im Schleifen Kopf oder bei Funktionen als Parameterübergabe vorkommen.
    Eigentlich tut man ja Zeiger so Deklarieren/Initialisieren:

    int* p = &n;
    

    Das ist mir auch noch voll Verständlich.Aber wenn sie dann so vorkommen,da verstehe ich es nicht(Bsp.laenge eines C-Arrays bestimmen):

    char s[100];
    //s fuellen...
    for(char* p = s; *p ; p++)
         ;//leerer rumpf
    int laenge = p-s;
    


  • WINFO2105 schrieb:

    char s[100];
    //s fuellen...
    for(char* p = s; *p ; p++)
         ;//leerer rumpf
    int laenge = p-s;
    

    Was verstehst du daran nicht? Gehen wir es mal langsam durch:

    char s[100];
    for(char* p = s; //p zeigt auf das erste Element von s. 
                     //arraybezeichner werden bei Funktionsaufrufen und in solchen
                     //Zuweisungen/Initialisierungen als pointer auf das erste
                     //Element gewertet, also steht da p = &s[0];
       *p;   //Die abbruchbedingung. p wird dereferenziert und das ergebnis wird
             //als boolscher Wert interpretiert. bei chars und anderen integralen
             //typen ist 0 bzw. '\0' = false, alles andere true.
             //die Schleife läuft also bis p auf das '\0' im array zeigt (Stringende)
       p++)    //p wird um eins erhöht, zeigt also auf das nächste char im array.
       ;     //in der Schleife passiert nichts
    int laenge = p-s; //die differenz zweier Pointer ist die Anzahl der Elemente die sie auseinanderliegen. 
                      //Also der Abstand zwishen Anfang des Arrays und dem '\0' in diesem Fall
    


  • Danke sehr hast mir auf jeden Fall bei diesem Problem weitergeholfen. 😉
    Ich weiß ja wie die For-schleife aufgebaut ist,bloß konnt ich mit der Abbruchbedingung nichts anfangen.
    Kannste mir evtl noch ein Nachschlagewerk,Tutorial,ebook empfehlen wo das mit den Zeigern und Referenzen gut beschrieben ist.
    Wär echt nett.
    MFG Steve



  • Zu Zeigern ist dir dieser Artikel bestimmt nützlich. 😉



  • Danke das Tutorial hat mir auf jeden Fall weiter geholfen.
    Hab jetzt nur noch eine Frage,in welcher verbindung stehen Zeiger und dieser Operator " -> " ?
    Was hat er für ne Funktion?
    MFG Steve



  • Der operator-> dereferenziert Klassen und greift auf deren Member zu.

    Statt

    (*MyClass).Member
    

    kannst du auch Folgendes schreiben:

    MyClass->Member
    

Anmelden zum Antworten