Funktionsanalyse
-
Hallo liebe Community, ich brauche wieder einmal eure Hilfe.
Ich habe hier aus einer älteren Klausur eine Aufgabe, welches ich nicht richtig verstehe.
Was gibt das folgende Programm aus wenn man es für char z [10] = "Worms" und char z2 [1]; *z2='\O' ; anwendet
int funktion(char *ptr) { char *p; p=ptr; // p zeigt jetzt auf das W ??? while (*p != '\O') // zähle solange hoch bis das Zeichen '\O' kommt ++p; return (p-ptr); // was gibt dieser Teil aus ?? Was bedeutet (p-ptr) ?? Und was gibt die Funktion schließlich zurück
-
p zeigt am Ende der Schleife auf das '\n'
ptr zeigt weiterhin auf den Anfang von dem String.Was ergibt also Ende minus Anfang?
-
Gibts das Zeichen '\O' überhaupt? Hab ich noch nie gesehen.
-
4-1 = 3 ...Also gibt es R weiter oder wie
-
Der Text Worms besteht aus 6 Zeichen: 'W', 'o', 'r', 'm', 's', '\0'
Worms0 012345 ^ ^ | + Hier zeigt p hin: 5 + hier zeigt ptr hin: 0
Du hast also 5 - 0 = 5. Einfach nur 5. Nix R (auch nicht r) oder 0.
Schau mal den Typ vom Rückgabewert der Funktion an.Was hast jetzt 5 mit "Worms" zu tun?
-
Asoooo, jetzt ergibt es natürlich Sinn, dass die Funktion int ist hatte ich garnicht mehr im Augenschein. Dann übergibt die Funktion für
char *z2[1]; *z2 = '\0'; Ausgabe ist : 0 Richtig ?
-
Ja.
Aber was bedeutet dieser Wert?
-
return 0
Es bedeutet, dass nichts zurückgegeben wird ?
-
Was bedeutet die 5 bei "Worms" und die 0 bei "" ?