#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) { /* ... */ }
或带有两个参数(这里称为
argc
andargv
,尽管可以使用任何名称1,因为它们对于声明它们的函数是本地的):int main(int argc, char *argv[]) { /* ... */ }
或等价物;10) 或以其他一些实现定义的方式。
现在,您可以为argc
和指定任何名称argv
。这里argc
是k
。由于您没有将参数传递给main
isk
因为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