【C++】main函数的秘密

原创 2016年08月30日 10:08:35

偶然一天突发奇想,在main主函数内加上了一行:

main()

调用自身?!

以前一直觉得main函数挺特殊,编译一下,没有报错!

#include<cstdio>
int main()
{
	printf("0");
	main();
	return 0;
}
于是我开始运行:

猜猜发生了什么?无限循环输出0?

本来我也这么认为,但是就在输出了满屏0没多久,程序停下来了(也有可能会提示你:XX已停止工作)。

稍微想想,栈溢出了!不过从这里可以看出:main“基本”可以递归调用


然后我又想:看看main到多少会栈溢出呢?

So easy!

定义一个全局变量,每次输出后++即可:

#include<cstdio>
int k=1;
int main()
{
	printf("%d ",k);
	k++;
	main();
	return 0;
}

43395!(此数据为回家测的)

话说,我在学校测的时候记得是60000多啊,肿么回事,又测一遍,还是这样。


没办法,问问“白老师”:

实际上,在C语言中,main函数可被递归调用,而在C++标准中,main函数不可以被递归调用。

那么main()在c++中是不能用的吗?

“C++标不允许,并不意味着就不可以下main函数递归调用的C++程序,只要你的编译器支持就行了。


但是还是没有解决栈溢出的问题,“白老师”也没有办法。

我自己觉得:栈溢出的递归次数应该是没有明确规定(好像也不是“规定”,但我找不出更好的词了……)的。


此博客仅为个人看法,有什么不对大家多多指正。

                                                                                                                                                                           By WZY

版权声明:本文为博主原创文章,不管你喜不喜欢都请转载~( ̄▽ ̄~)

main 函数的秘密

这个问题在笔试和面试中很容易被问到,是很基础的知识点,所以今天将此整理出来,以便以后复习。 要点: 1、main函数也是函数,具有函数的一般属性; 2、main函数具有返回值,也具有形式...

C 语言运行main函数之前的秘密。

转载自http://blog.csdn.net/daiyutage/article/details/8579820

C++_main()函数及其参数

  • 2011年11月16日 13:58
  • 31KB
  • 下载

c++中main函数形参不为空的情况

  • 2014年05月02日 16:33
  • 13KB
  • 下载

[C/C++基础知识] main函数的参数argc和argv

该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助. 一.main()函数参数 通常我们在写主函数时都是vo...

c/c++ main 函数命令行参数的使用 知识小结

C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程 序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用 的是有参函数,则参数...

C++main函数argc和argv命令行参数

众所周知,每个C++程序都有一个main函数。main函数的两个形参我们至今未曾看到,因为所有程序都没有定义他们。迄今为止,所有的程序定义都是具有空形参的main函数。但是事实上,main函数是唯一不...

关于 C/C++ 的 main 函数

一、最近见一题目,描述如下:C/C++ code#include  void print()  { ***********************  } void main()  {     }请用一...
  • rjw9999
  • rjw9999
  • 2011年06月01日 20:51
  • 136

C++的main函数参数

程序: 文件名为:main函数参数 #include "stdafx.h" #include using namespace std; int main(int argc, char* argv...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C++】main函数的秘密
举报原因:
原因补充:

(最多只允许输入30个字)