#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
、次のインデックスで再印刷を再度呼び出すことだけです。