2016-11-29 120 views
-4

我有一些代碼:`return 1 + strlen_rec(&arr [1]);`是什麼意思?

int strlen_rec(char arr[]) 
{ 

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

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

是混淆了我行。有人可以解釋它的作用嗎?

+4

閱讀遞歸。 –

+1

然後嘗試使用調試器逐行執行代碼。 –

+0

這裏沒有問題! –

回答

1

該函數使用遞歸計算字符串的長度。它可能看起來很混亂,因爲它使用像指針這樣的數組。 &ar[1]正在增加指針(用下一個字節的地址調用該函數)。 C字符串以一個不包含在長度中的空字節結尾,因此當它到達時返回0。