Char-Zeiger | Anfängerproblem



  • jetz mal im ernst. so muss das:

    void Func1( char** p_chr )
    {
        for( int i = 0; i < 5; i++ )
            (*p_chr)++;
    }
    
    int main(void)
    {
        char* p = "Dies ist ein Test";
    
        printf ("%s\n", p);
        Func1 (&p);
        printf ("%s\n", p);
    
        return 0;
    }
    

    🙂



  • +fricky schrieb:

    jetz mal im ernst. so muss das

    Jetzt mal im ernst: Du machst doch nichts anders als ich, abgesehen davon, dass du die C-Funktion printf statt cout verwendest. Von daher hätte sich mein Problem nicht erledigt, wenn es denn nicht plötzlich gehen würde 😉

    Entweder bilde ich es mir nur ein, aber ich war mir 100% sicher, dass nach dem Aufruf der Funktion p immer noch auf das "D" zeigt ... irgendwie hat sich das mittlerweile von selbst erledigt ... sehr merkwürdig^^



  • FrEEzE2046 schrieb:

    Jetzt mal im ernst: Du machst doch nichts anders als ich, abgesehen davon, dass du die C-Funktion printf statt cout verwendest.

    Das macht er, weil Du Dich hier im C-Forum befindest und es für C++ ein Extra-Forum ein Stockwerk tiefer gibt.



  • +fricky schrieb:

    im cpp forum hätteste für die verwendung des C-casts schon mecker gekriegt.

    Allerdings. Das wären wieder 10 Seiten "Mein-Cast-ist-der-richtige"-Krieg geworden. 😃

    Belli schrieb:

    Belli schrieb:

    Mach mal statt:
    cout << *p << endl;

    folgendes:
    cout << p << endl;

    Mach es einfach ...

    Damit gibst du aber nicht die Adresse aus (ich dachte, das wollten wir, oder nicht?), sondern den String, auf den p zeigt.



  • Belli schrieb:

    FrEEzE2046 schrieb:

    Jetzt mal im ernst: Du machst doch nichts anders als ich, abgesehen davon, dass du die C-Funktion printf statt cout verwendest.

    Das macht er, weil Du Dich hier im C-Forum befindest und es für C++ ein Extra-Forum ein Stockwerk tiefer gibt.

    Ich halte es für albern nur wegen der Verwendung von cout, was nichts mit dem geschilderten Problem zu tun hat, hier von einem C++-Problem zu sprechen.

    Von daher passt das hier schon ganz gut.



  • FrEEzE2046 schrieb:

    Ich halte es für albern nur wegen der Verwendung von cout, was nichts mit dem geschilderten Problem zu tun hat, hier von einem C++-Problem zu sprechen.

    aber ja, durch 'cout' wird's doch erst zu 'nem c++-problem. 'cout' interpretiert seinen input, das kann schnell mal anders aussehen, als erhofft. woran lags denn bei dir, wenn nicht am 'cout'?
    🙂



  • _matze schrieb:

    +fricky schrieb:

    im cpp forum hätteste für die verwendung des C-casts schon mecker gekriegt.

    Allerdings. Das wären wieder 10 Seiten "Mein-Cast-ist-der-richtige"-Krieg geworden. 😃

    Belli schrieb:

    Belli schrieb:

    Mach mal statt:
    cout << *p << endl;

    folgendes:
    cout << p << endl;

    Mach es einfach ...

    Damit gibst du aber nicht die Adresse aus (ich dachte, das wollten wir, oder nicht?), sondern den String, auf den p zeigt.

    Jein. Es wird natürlich nicht die Adresse ausgegeben, insofern ist Dein Einwand korrekt. Dennoch eignet es sich aufzuzeigen, daß der Zeiger inkrementiert wurde.



  • Belli schrieb:

    Jein. Es wird natürlich nicht die Adresse ausgegeben, insofern ist Dein Einwand korrekt. Dennoch eignet es sich aufzuzeigen, daß der Zeiger inkrementiert wurde.

    Jepp, einverstanden. 🙂



  • +fricky schrieb:

    aber ja, durch 'cout' wird's doch erst zu 'nem c++-problem. 'cout' interpretiert seinen input, das kann schnell mal anders aussehen, als erhofft. woran lags denn bei dir, wenn nicht am 'cout'?
    🙂

    Ja, schon klar, aber cout war nicht die Ursache; das meinte ich.
    Ich kann dir nicht sagen woran es lag. Ich wollte es einfach nochmal schnell ausprobieren, nachdem du mir geantwortet hattest und plötzlich ging es. Keine Ahnung, ich versteh`s selbst nicht.



  • FrEEzE2046 schrieb:

    Ich kann dir nicht sagen woran es lag. Ich wollte es einfach nochmal schnell ausprobieren, nachdem du mir geantwortet hattest und plötzlich ging es. Keine Ahnung, ich versteh`s selbst nicht.

    Da gibts nicht viel zu verstehen. Dass dieser Code beim zweiten Ausführen plötzlich ein anderes Ergebnis liefert, ist quasi ausgeschlossen. Du wirst dich einfach verguckt haben. Kommt schon mal vor...


Anmelden zum Antworten