Hilfe bei ARGC und ARGV



  • kann mir jemand weiter helfen und erklären was folgende ausdrücke bewirken bzw ausgaben.

    **
    ++argv; = ?
    **++argv; = ?
    (
    ++argv)[0]; = ?
    (++)++argv; = ?
    *++(argv[0]); = ?
    **

    hab probiert nen program zu schreiben das es ausgibt aber zeigt bei argv nichts sinnvolles an.

    thanks mortal :shock:



    1. *++argv = liefert einen Zeiger auf das 2. argument
    2. **++argv = liefert das 1. zeichen des 2. arguments
    3. (*++argv)[0] = das selbe wie 2) nur angenehmer geschrieben: inc -> deref. -> arraylike das 1 zeichen liefern
    4. (++)++argv = muss ich passen
    5. *++(argv[0]) = Zeiger auf 1. element um 1 erhöhen und deref. => 2. zeichen des 1. arguments

    Bsp: meinprog.exe Hallo Welt!
    1)Zeiger auf "W"
    2)"W"
    3)"W"
    4)muss ich passen
    5)"a"

    korrigiert mich wenn ich mist schreibe 😉

    Gruß
    FreaK



  • (++)++argv; = ?

    syntaxfehler



    1. *++argv = liefert einen Zeiger auf das 2. argument

    müsste dann doch " Welt! " lauten oder ?



  • mortal schrieb:

    1. *++argv = liefert einen Zeiger auf das 2. argument

    müsste dann doch " Welt! " lauten oder ?

    leerzeichen werden von vorn herein ausgeschlossen (sind eben trennzeichen), es sei denn du übergibst sowas als argument: meinprog.exe "Hallo Welt!"

    ++argv liefert einen Zeiger auf das 2. argument, was ein char ist, sprich ein Zeiger auf eine Zeihenkette. Diese wiederum zeigen immer auf das 1. Element, in diesem Fall auf die Adresse von "W"

    deref. du diesen Zeiger nochmal bekommst du das "W" selbst wie in 2) und 3) eben.


Log in to reply