können zeiger nur auf strings deuten?



  • naja topic sagt alles..
    mfg



  • Nein. Zeiger koennen auf jeden beliebigen Typ zeigen, sogar auf andere Zeiger oder Zeiger, die auf Zeiger zeigen, die auf andere Zeiger zeigen, die... ich denke du verstehst 😉



  • danke 🙂

    ok dann verstehe ich aber nicht warum das bei mir nicht compilieren will:
    "invalid conversion from `int' to `int*' "
    ich habe einen wert ganz normal aus der hauptfunktion in eine andere übergeben (call by value) und jetzt will ich dass ein zeiger aus einer dritten funktion auf diesen übergabewert deutet (und ihn ändert)?

    mfg



  • du setzt einen Zeiger auf ein int einem int gleich. Grob vereinfacht folgendes:

    int i = 15; //das int
    int* pi; //der Zeiger
    
    //pi = i; //FALSCH, ints und Zeiger auf ints sind nicht der selbe Datentyp
    pi = &i; //RICHTIG, pi zeigt jetzt auf i
    

    Der Adressoperator & liefert die Adresse seines Arguments, und da Zeiger im Grunde nicht viel mehr als Adressen sind, ist das genau das, was du vermutlich moechtest.

    Kleiner Tipp am Rande: Zeig am Besten immer den Code, mit dem du Probleme hast, dann kann dir besser geholfen werden 🙂



  • naja der ganze code is bissl lang denk ich mal, ich kopier ma das woraufs ankommt raus:

    void xxx (char *, char *, int);
    int yyy (char *, char *, char, int *);
    
    int main ()
    {
        int anz=10; //deklaration von anz
        xxx (rwort, lwort, anz); //aufruf von xxx mit übergabe von anz
    }
    
    void xxx (char *w, char *l, int anz)
    {
        yyy(w, l, puffer[0], anz); //aufruf von yyy mit übergabe von anz als zeiger
    }
    
    int yyy (char *w, char *l, char alpha, int *anz)
    {
        --anz;
    }
    

    den adressoperator brauche ich bei parameterübergaben in funktionsaufrufen nicht oder? bei den stings scheint der compiler ja auch von alleine die adresse zu suchen.. 🙄

    mfg



  • So:
    yyy(w, l, puffer[0], **&**anz);

    char* ist einfach ein Zeiger auf ein char. Ob dahinter jetzt ein char Array oder nur ein char ist, kannst du garnicht wissen. Und für Strings gibt es übrigens std::string.



  • feo schrieb:

    den adressoperator brauche ich bei parameterübergaben in funktionsaufrufen nicht oder? bei den stings scheint der compiler ja auch von alleine die adresse zu suchen.. 🙄

    Dein Compiler sucht da garnix. Wenn für Dich ein String ein char -Array ist (

    ), dann legt der Standard fest, dass der Name des Arrays der Adresse seines ersten Elements entspricht.

    greetz, Swordfish



  • ahso.. muss man wissen oO
    jetz funzt es thx!



  • zeiger ist ne feine sache, hatte anfangs auch kein gefühl dafür;)


Anmelden zum Antworten