C++ main函数

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);   

}
相关推荐
半青年14 分钟前
单例模式:全局唯一性在软件设计中的艺术实践
java·c++·python·单例模式
说码解字15 分钟前
C++ RAII
开发语言·c++
zl_dfq18 分钟前
C++ 之 【list的简介、list 的构造函数、iterator、容量操作、元素访问、增删查改与迭代器失效】
数据结构·c++
喵先生!21 分钟前
C++中析构函数
开发语言·c++
qq_447663051 小时前
手写SpringMVC(基本框架)
java·开发语言
程序员JerrySUN6 小时前
驱动开发硬核特训 · Day 22(下篇): # 深入理解 Power-domain 框架:概念、功能与完整代码剖析
linux·开发语言·驱动开发·嵌入式硬件
游离状态的猫17 小时前
JavaScript性能优化实战:从瓶颈定位到极致提速
开发语言·javascript·性能优化
GeekABC7 小时前
FastAPI系列06:FastAPI响应(Response)
开发语言·python·fastapi·web
小彭努力中7 小时前
7.Three.js 中 CubeCamera详解与实战示例
开发语言·前端·javascript·vue.js·ecmascript
why1517 小时前
腾讯(QQ浏览器)后端开发
开发语言·后端·golang