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

}
相关推荐
Boilermaker19925 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
MM_MS5 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
꧁Q༒ོγ꧂6 小时前
LaTeX 语法入门指南
开发语言·latex
njsgcs6 小时前
ue python二次开发启动教程+ 导入fbx到指定文件夹
开发语言·python·unreal engine·ue
alonewolf_996 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
古城小栈6 小时前
Rust 迭代器产出的引用层数——分水岭
开发语言·rust
ghie90906 小时前
基于MATLAB的TLBO算法优化实现与改进
开发语言·算法·matlab
恋爱绝缘体16 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wuk9986 小时前
VSC优化算法MATLAB实现
开发语言·算法·matlab
AI小怪兽7 小时前
基于YOLOv13的汽车零件分割系统(Python源码+数据集+Pyside6界面)
开发语言·python·yolo·无人机