#include <stdio.h>
#include <stdlib.h>
void reprint(char *a[]) {
if(*a) {
printf("%d ",a);
reprint(a+1);
printf("%s ",*a);
}
}
int main() {
char *coll[] = {"C", "Objective", "like", "don't", "I", NULL};
reprint(coll);
printf("\n");
return EXIT_SUCCESS;
}
正如更有經驗的人會知道,這反向打印數組。我不太明白!有人可以爲我解釋這個遞歸函數嗎?
我需要幫助瞭解什麼是reprint(char *a[])
。我理解指針算術的程度,但是從插入printf
s,我已經確定函數遞增到數組末尾,然後返回到開始處,僅在下降時打印。但是,我不明白它是如何做到這一點的;我通過查看實際代碼所能理解的是,如果*a
不是NULL
,那麼請在下一個索引再次調用reprint。
'printf(「%d」,a);'是未定義的行爲,因爲'a'是一個指針而不是int – user411313
@ user411313 - 是的,這是一個意外,要成爲* a –
@capncoolio並不能真正解決user411313發出的問題,但可以使用%p打印指針。 – fvu