#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是标准定义的。你的编译器应该给出警告:
[Warning] 'main' takes only zero or two arguments [-Wmain]
程序启动时调用的函数名为
main. 实现没有声明这个函数的原型。它应定义为返回类型int且不带参数:int main(void) { /* ... */ }或带有两个参数(这里称为
argcandargv,尽管可以使用任何名称1,因为它们对于声明它们的函数是本地的):int main(int argc, char *argv[]) { /* ... */ }或等价物;10) 或以其他一些实现定义的方式。
现在,您可以为argc和指定任何名称argv。这里argc是k。由于您没有将参数传递给mainisk因为1这里argv[0]是程序的名称。现在k=1被程序用作初始值和值
10 9 8 7 6 5 4 3 2
通过递归调用打印main。
1.重点是我的。
您已将 main 函数用作递归函数,因此当您使用参数 1 调用它时,它将堆栈 main 函数,而 k 达到 10 的值,然后它将堆栈出列并按相反顺序打印值。你通过 ,2,3,..10 并且在堆栈出队后它将打印 10,9,..2