c++ 让main函数循环运行大家都是怎么做的?

我是在main函数体最后加了一句returnmain();就能循环运行了,可是想不通为什么这句话可以编译执行,因为return是只能返回一个值啊,而main()是一个函数... 我是在main函数体最后加了一句return main();就能循环运行了,可是想不通为什么这句话可以编译执行,因为return是只能返回一个值啊,而main()是一个函数,看起来确实是返回了一个函数,谁来帮我解释一下?
有点明白了,引起了递归。
展开
 我来答
DelRa
推荐于2017-12-16 · TA获得超过214个赞
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:170万
展开全部
因为main函数也可以返回值啊,而且一般来说main函数都写成
int main(...)
这个样子。
main函数的返回值是交给程序调用者的,一般来说返回0代表程序成功运行了。
这样看return main()的意思明白了吧,
“再调用一次main函数,并把下次调用的返回值作为本次的返回值”
由于形成了递归调用,所以会看似循环。

但是,话说回来,这样做不好哦,因为递归的时候,栈空间被不断压缩,终有无法递归下去的时候。建议使用这样的形式:

int main() {
while(1) {
...
}
return 0;
}
yaoyue1019
2010-01-28 · 知道合伙人互联网行家
yaoyue1019
知道合伙人互联网行家
采纳数:804 获赞数:3392
擅长lua脚本 与android前端交互设计

向TA提问 私信TA
展开全部
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)那个一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
higale
2010-01-28 · TA获得超过1640个赞
知道答主
回答量:22
采纳率:0%
帮助的人:8.4万
展开全部
如果是return main()的话,并不是循环,这是递归调用,不推荐这么使用,最好还是使用for、while等等循环语句

如题一定要用 return main()这样的方式实现的话,要注意控制递归次数,因为每次调用main()时,都会向堆栈内压数据的,循环次数过多时,会导致堆栈崩溃(内存不足)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿鸾44
2010-01-28 · TA获得超过2137个赞
知道大有可为答主
回答量:2141
采纳率:50%
帮助的人:554万
展开全部
补充:c语言里,函数名也是变量,这个变量存放这段函数的返回值,所以“main”是一个变量,int main() ;在机器里理解为:创建了一个整型变量。只不过这个变量的值是通过一段代码算出来的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
键声3381
2010-01-28 · TA获得超过346个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:277万
展开全部
在return眼里,只要返回类型判断正确,才懒得管你return的是变量还是函数呢。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式