c++ 让main函数循环运行大家都是怎么做的?
我是在main函数体最后加了一句returnmain();就能循环运行了,可是想不通为什么这句话可以编译执行,因为return是只能返回一个值啊,而main()是一个函数...
我是在main函数体最后加了一句return main();就能循环运行了,可是想不通为什么这句话可以编译执行,因为return是只能返回一个值啊,而main()是一个函数,看起来确实是返回了一个函数,谁来帮我解释一下?
有点明白了,引起了递归。 展开
有点明白了,引起了递归。 展开
6个回答
展开全部
因为main函数也可以返回值啊,而且一般来说main函数都写成
int main(...)
这个样子。
main函数的返回值是交给程序调用者的,一般来说返回0代表程序成功运行了。
这样看return main()的意思明白了吧,
“再调用一次main函数,并把下次调用的返回值作为本次的返回值”
由于形成了递归调用,所以会看似循环。
但是,话说回来,这样做不好哦,因为递归的时候,栈空间被不断压缩,终有无法递归下去的时候。建议使用这样的形式:
int main() {
while(1) {
...
}
return 0;
}
int main(...)
这个样子。
main函数的返回值是交给程序调用者的,一般来说返回0代表程序成功运行了。
这样看return main()的意思明白了吧,
“再调用一次main函数,并把下次调用的返回值作为本次的返回值”
由于形成了递归调用,所以会看似循环。
但是,话说回来,这样做不好哦,因为递归的时候,栈空间被不断压缩,终有无法递归下去的时候。建议使用这样的形式:
int main() {
while(1) {
...
}
return 0;
}
展开全部
C的话不像LUA那样,函数也是作为数据的一种类型
C的话你在最后一段运行return main()
只是表示你运行了之前的代码,在运行到return那一行后,需要返回一个值
值是对main()函数求值以后的返回值
所以运行到return的时候会再调用一次main函数,求值以后再把求出的值作为返回值返回
要是要用循环的话主要是用2种方法
1是FOR 2是WHILE
while(条件)
{函数体}
for(初始化循环变量;判断条件;循环后执行的操作)
{函数体}
比如:
int i=0;
while(i<5)
{i++;}
函数体i++会运行5次,第6次因为i=6不满足i<5而使循环中止
要是想让函数无限运行,可以使用
while(1)
{函数体}
因为1是永真的,所以不会退出
for事例:
for(int i=0;i<5;i++)
{......}
效果和while(i<5)那个一样
C的话你在最后一段运行return main()
只是表示你运行了之前的代码,在运行到return那一行后,需要返回一个值
值是对main()函数求值以后的返回值
所以运行到return的时候会再调用一次main函数,求值以后再把求出的值作为返回值返回
要是要用循环的话主要是用2种方法
1是FOR 2是WHILE
while(条件)
{函数体}
for(初始化循环变量;判断条件;循环后执行的操作)
{函数体}
比如:
int i=0;
while(i<5)
{i++;}
函数体i++会运行5次,第6次因为i=6不满足i<5而使循环中止
要是想让函数无限运行,可以使用
while(1)
{函数体}
因为1是永真的,所以不会退出
for事例:
for(int i=0;i<5;i++)
{......}
效果和while(i<5)那个一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是return main()的话,并不是循环,这是递归调用,不推荐这么使用,最好还是使用for、while等等循环语句
如题一定要用 return main()这样的方式实现的话,要注意控制递归次数,因为每次调用main()时,都会向堆栈内压数据的,循环次数过多时,会导致堆栈崩溃(内存不足)
如题一定要用 return main()这样的方式实现的话,要注意控制递归次数,因为每次调用main()时,都会向堆栈内压数据的,循环次数过多时,会导致堆栈崩溃(内存不足)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
补充:c语言里,函数名也是变量,这个变量存放这段函数的返回值,所以“main”是一个变量,int main() ;在机器里理解为:创建了一个整型变量。只不过这个变量的值是通过一段代码算出来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在return眼里,只要返回类型判断正确,才懒得管你return的是变量还是函数呢。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询