2016-11-29 8 views
-4

Ich habe einige Code:Was bedeutet `1 + strlen_rec (& arr [1]);` bedeuten?

int strlen_rec(char arr[]) 
{ 

    if(arr[0]=='\0') 
     return 0; 
    else 
     return 1 + strlen_rec(&arr[1]) ; 
} 

Die Linie

return 1 + strlen_rec(&arr[1]) ; 

mich ist verwirrend. Kann jemand erklären, was es macht?

+4

lesen Sie über Rekursion. –

+1

Und versuchen Sie einen Debugger verwenden, um den Code Zeile für Zeile zu durchlaufen. –

+0

Hier ist keine Frage !!! –

Antwort

1

Diese Funktion zählt die Länge einer Zeichenfolge durch Rekursion. Es kann verwirrend aussehen, da es ein Array wie einen Zeiger verwendet. &ar[1] erhöht den Zeiger (Aufruf der Funktion mit der Adresse des nächsten Bytes). C-Strings werden mit einem Null-Byte terminiert, das nicht in der Länge enthalten ist, so dass es 0 zurückgibt, wenn es erreicht wird.