#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。