main函数概述
1、main函数是C++程序的入口,每个C++程序必须要有一个main函数。
每个C++程序都包含一个或多个函数,其中一个必须命名为main。main函数是一个程序的入口函数,所有的C++程序都必须包含一个main函数。如果你试图去编译一个没有main函数的C++程序,编译器会报错。
2、main函数必须返回int值。如果没有明确写出,默认返回0。
main函数需要注意的几点
- 不能被重载。
- 不能被定义为inline函数。
- 不能被定义为static函数。
- 不能对main函数的地址进行赋值。
- 不能被调用。
main函数的形式
cpp
//第一种 没有参数
int main();
//第二种 两个参数
int main(int argc,char* argv[]);
int main(int argc,char** argv);
//第三种 三个参数
int main(int argc, char* argv[],char *envp[]);
int main(int argc, char** argv,char** envp);
第一种形式是比较常见的,没有任何参数,完整的代码如下:
int main()
{
cout << "Hello Main Function" << endl;
return 0;
}
第二种形式具有两个参数。第一个参数argc
是整型参数,代表向程序传递的参数个数。第二个参数是二维的char型指针,存放命令行参数字符串。示例如下:
int main(int argc, char** argv)
{
cout << argc << endl;
for (int i = 0;i < argc;i++)
{
cout << argv[i] << endl;
}
return 0;
}
在终端中输入命令:./main arg1 arg2
,输出如下结果:
3
./main
arg1
arg2
第三种形式具有三个参数:第一个参数argc
是整型参数,代表向程序传递的参数个数。第二个参数是二维的char型指针,存放命令行参数字符串。第三个参数是二维的char型指针,存放环境变量。示例如下:
cpp
void envp_parse(char** envp)
{
int i = 0;
char** Travel = envp;
while (NULL != Travel)
{
if (NULL == *Travel)
{
printf("Envp Over!!!\r\n");
return;
}
else
{
printf("%s\r\n", *Travel);
}
Travel++;
}
}
int main(int argc, char** argv,char** envp)
{
cout << argc << endl;
for (int i = 0;i < argc;i++)
{
cout << argv[i] << endl;
}
envp_parse(envp);
return 0;
}
main函数最好不要递归调用自身。但可以调用。
下面就是一个有趣的小程序。
只准用一条语句正负交替输出1-1000所有数字,不准用任何循环语句
cpp
#include iostream
using namespace std;
int main(int argc)
{
cout<<argc,abs(argc) 1000 main(argc 0 (--argc) -1 (++argc) -1)1000;
system(pause);
}