我有这段代码

#include <stdio.h>
void Funz(char *S);
int main()
{
        char S[100] = "abcdefghilmnopq";
        Funz(S);
    return 0;
}
void Funz(char *S)
{
    if ('\0' != S[0])
    {
    Funz(S+1);
    printf("%c", *S);
    }
}

我不知道为什么打印值的顺序是相反的,而不仅仅是“q”。

最佳答案

Funz(S+1);
printf("%c", *S);

这里是递归调用,然后执行printf。为了打印,必须完成每个子调用,然后执行printf。这就是为什么它是反向打印的。
相反,如果使用loop和iterate,则只能得到'q'
例如,让我们用一个短字符串表示"abc"-
                           Funz(s[0]) (0
                         /          \
                    Funz(s[1])(1   'a' (6
                   /           \
               Funz(s[2])(2  'b'(5
              /            \
            condition    'c'(4
            false (3

执行顺序-0 1 2 3 4 5 6

关于c - 了解C中的打印值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44748836/

10-11 16:33