【发布时间】:2014-01-16 01:42:45
【问题描述】:
#include <stdio.h>
int main(int k)
{
if(k<10)
printf("%d ",main(k+1));
return k;
}
输出是:
10 9 8 7 6 5 4 3 2
在main() 函数的参数中,它的argc 但在这里如何使用?
【问题讨论】:
-
你的编译器/环境是什么,不是标准的 main 签名,除非你的实现明确允许它。
-
哦..对不起..我忘了说..它的 GCC
-
传递给程序代码的参数数量将决定 k 的初始值。在不传递任何参数的情况下,k 的初始值为 1。对 main 的递归调用不会像 O/S 将参数传递给 main 那样使用 main。它调用自己就像任何常规函数一样,它传递一个 k+1 的 int 参数。递归作为 printf 的参数发生,因此 printf 将等待对 main 的调用返回,然后才能打印。结果是反向打印顺序。