The Pointer is pointing on you...



  • Sebastian Pizer schrieb:

    Mentras schrieb:

    char eingabe[1024] = {0};
      //...
      rot3_func(eingabe);  //Wieso [...] nicht: rot3_func(&eingabe);
    

    eingabe ist ein array von char und die Funktion erwartet ein char*. C und C++ führen hier einen "Array-zu-Zeiger-Verfall" durch. Dabei wird ein Zeiger erzeugt, der auf das erste Element des Arrays zeigt. Von Hand durchgeführt müsste es dann so aussehen:

    rot3_func(&eingabe[0]);
    

    Gruß,
    SP

    Oh, nagut ich versuch´s mal wiederzugeben was ich verstanden habe...

    Wenn ich den &-Operator verwenden wollte hätte ich´s so machen müssen:

    Beim Aufrufen:

    for(int i=0;eingabe[i]!='\0';i++)
    rot3_func(&eingabe[i]);
    

    Wäre natürlich jetzt etwas umständlicher, aber mir geht´s jetzt nur ums verstehen.

    Lg Mentras



  • Mentras schrieb:

    Wenn ich den &-Operator verwenden wollte hätte ich´s so machen müssen:

    for(int i=0;eingabe[i]!='\0';i++)
    rot3_func(&eingabe[i]);
    

    Nein. Einfach

    rot3_func(&eingabe[0]);
    

    Hier ist ein anderes Beispiel

    char array[999];
    char* p1 = array;     // "array-to-pointer decay" (automatisch)
    char* p2 = &array[0]; // manuell
    

    p1 und p2 zeigen jeweils auf das erste Element des Arrays.

    Gruß,
    SP



  • Sebastian Pizer schrieb:

    Mentras schrieb:

    Wenn ich den &-Operator verwenden wollte hätte ich´s so machen müssen:

    for(int i=0;eingabe[i]!='\0';i++)
    rot3_func(&eingabe[i]);
    

    Nein. Einfach

    rot3_func(&eingabe[0]);
    

    Hier ist ein anderes Beispiel

    char array[999];
    char* p1 = array;     // "array-to-pointer decay" (automatisch)
    char* p2 = &array[0]; // manuell
    

    p1 und p2 zeigen jeweils auf das erste Element des Arrays.

    Gruß,
    SP

    Und der Zeiger ändert dann alle Elemente in der Funktion?


Anmelden zum Antworten