#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
但是如何使用它?
答案 0 :(得分:4)
首先,main
的签名是标准定义的。您的编译器应该发出警告:
[Warning] 'main' takes only zero or two arguments [-Wmain]
程序启动时调用的函数名为
main
。实施宣布否 这个功能的原型。它应定义为返回类型int
且没有 参数:int main(void) { /* ... */ }
或有两个参数(此处称为
argc
和argv
,虽然任何名称都可能是 使用 1 ,因为它们是声明它们的函数的本地代码:int main(int argc, char *argv[]) { /* ... */ }
或等同物; 10)或以某种其他实现定义的方式。
现在,您可以为argc
和argv
添加任何名称。此处argc
为k
。由于您没有将参数传递给main
,k
的值为1
,因为此处argv[0]
是程序的名称。现在,k=1
被程序用作初始值和值
10 9 8 7 6 5 4 3 2
通过main
的递归调用打印。
<子> 1。重点是我的。
答案 1 :(得分:0)
你已经使用main函数作为递归函数,因此当你用参数1调用它时它将堆叠main函数而k达到10的值,然后它使堆栈出列并按相反的顺序打印值。你传递,2,3,... 10和堆栈出队后它将打印10,9,... 2