Frage zu Quelltext/Zeigerarrays



  • Du kannst auch auto durch std::vectorstd::string::const_iterator ersetzen wenns dir Spaß macht, ich habe auto verwendet, um mich auf das Wesentliche zu konzentrieren. Und was er jetzt mit den einzelnen Argumenten tut, tut nichts zu Sache - ich wollte lediglich die allgemeine Verarbeitung in C++ vorzeigen.



  • Danke für eure schnellen Antworten.
    Sorry, hab ich aus Versehen ins falsche Forum geschrieben.

    Aber so wirklich kapiere ich das trotzdem noch nicht, warum ich jetzt einmal "*" brauche und einmal nicht.



  • Harry87 schrieb:

    Aber so wirklich kapiere ich das trotzdem noch nicht, warum ich jetzt einmal "*" brauche und einmal nicht.

    Das * steckt in dem einen Fall schon im [] mit drin. Falsch, eigentlich in beiden. Jedes [] enthält ein * aufgrund der folgenden Definition: a[b] := *(a+b) . Wenn du also argv[1][i] hast, ist das gleichbedeutend mit *(*(argv + 1) + i) (schreibt so aber keiner, nur fürs Verständnis).

    Der Code ist trotzdem ... nicht besonders. Man versteht durch scharfes Nachdenken noch viel zu gut, was er machen soll. 🙂



  • 314159265358979 schrieb:

    Fünftens, hier die C++-Variante: http://ideone.com/nxEZM

    Wenn jemand schon etwas als C++ Variante anpreist, soll er auch die echte nehmen: http://ideone.com/fDuJ2

    Ein std::vector als Wrapper eines Arrays ist eigentlich nie sinnvoll.



  • 314159265358979 schrieb:

    Viertens, heißt es int main(int argc, char** argv).

    Bullshit! Ob man char* argv[] oder char** argv schreibt ist dem Standard egal.



  • Bashar schrieb:

    Das * steckt in dem einen Fall schon im [] mit drin. Falsch, eigentlich in beiden. Jedes [] enthält ein * aufgrund der folgenden Definition: a[b] := *(a+b) . Wenn du also argv[1][i] hast, ist das gleichbedeutend mit *(*(argv + 1) + i) (schreibt so aber keiner, nur fürs Verständnis).

    Der Code ist trotzdem ... nicht besonders. Man versteht durch scharfes Nachdenken noch viel zu gut, was er machen soll. 🙂

    Hm okay also die Definitionen hab ich soweit verstanden. Aber das erklärt mir irgendwie immer noch nicht, warum das * dann bei dem anderen Array wegfällt...?



  • EOutOfResources schrieb:

    Bullshit!

    Ruhig, Mr pi bezog sich doch wahrscheinlich lediglich auf das void vor dem main.



  • Harry87 schrieb:

    Hm okay also die Definitionen hab ich soweit verstanden. Aber das erklärt mir irgendwie immer noch nicht, warum das * dann bei dem anderen Array wegfällt...?

    Dann wende die Definition doch mal auf deinen Fall an.



  • yahendrik schrieb:

    Ruhig, Mr pi bezog sich doch wahrscheinlich lediglich auf das void vor dem main.

    Ups, das habe ich übersehen. Ich nehme alles zurück.



  • fDuJ2 schrieb:

    314159265358979 schrieb:

    Fünftens, hier die C++-Variante: http://ideone.com/nxEZM

    Wenn jemand schon etwas als C++ Variante anpreist, soll er auch die echte nehmen: http://ideone.com/fDuJ2

    Ein std::vector als Wrapper eines Arrays ist eigentlich nie sinnvoll.

    Im Normalfall will man die Argumente irgendwo speichern und damit etwas tun. 😉


Anmelden zum Antworten