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

}
相关推荐
弱冠少年22 分钟前
websockets库使用(基于Python)
开发语言·python·numpy
长天一色23 分钟前
C语言日志类库 zlog 使用指南(第五章 配置文件)
c语言·开发语言
MinBadGuy31 分钟前
【GeekBand】C++设计模式笔记5_Observer_观察者模式
c++·设计模式
一般清意味……35 分钟前
快速上手C语言【上】(非常详细!!!)
c语言·开发语言
卑微求AC35 分钟前
(C语言贪吃蛇)16.贪吃蛇食物位置随机(完结撒花)
linux·c语言·开发语言·嵌入式·c语言贪吃蛇
技术无疆1 小时前
【Python】Streamlit:为数据科学与机器学习打造的简易应用框架
开发语言·人工智能·python·深度学习·神经网络·机器学习·数据挖掘
金灰1 小时前
HTML5--裸体回顾
java·开发语言·前端·javascript·html·html5
爱上语文1 小时前
Java LeetCode每日一题
java·开发语言·leetcode
Манго нектар2 小时前
JavaScript for循环语句
开发语言·前端·javascript
程序猿小D2 小时前
第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例
java·开发语言·数据库·windows·jpa