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

}
相关推荐
麦麦大数据12 小时前
MacOS 安装Python 3.13【同时保留旧版本】
开发语言·python·macos·python安装
上去我就QWER14 小时前
Qt中如何获取系统版本信息
开发语言·qt
我是苏苏15 小时前
C#高级:程序查询写法性能优化提升策略(附带Gzip算法示例)
开发语言·算法·c#
木木子999915 小时前
业务架构、应用架构、数据架构、技术架构
java·开发语言·架构
学涯乐码堂主19 小时前
GESP C++ 四级第一章:再谈函数(上)
c++·青少年编程·gesp·四级·学漄乐码青少年编程培训
微露清风20 小时前
系统性学习C++-第九讲-list类
c++·学习·list
大佬,救命!!!20 小时前
C++多线程同步与互斥
开发语言·c++·学习笔记·多线程·互斥锁·同步与互斥·死锁和避免策略
赵文宇(温玉)20 小时前
构建内网离线的“github.com“,完美解决内网Go开发依赖
开发语言·golang·github
qq74223498420 小时前
Python操作数据库之pyodbc
开发语言·数据库·python
Joker1008520 小时前
仓颉自定义序列化:从原理到高性能多协议实现
开发语言