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

}
相关推荐
W_326009 小时前
Python文件进阶:一维数据与 CSV 文件读写
开发语言·python
Tyler_TXZ9 小时前
C++C语言之——二叉树
c语言·开发语言·数据结构·c++·二叉树
不会代码的小猴9 小时前
C++新增关键字
开发语言·c++·笔记
yaoxin52112310 小时前
497. Java 反射 - 使用反射读取注解
java·开发语言·python
2019一路前行10 小时前
Python 函数式编程
开发语言·python
liulilittle10 小时前
并发与内存安全术语:定义、分类与关联
c++·安全·并发·术语
_wyt00111 小时前
从图到树:9道洛谷基础题带你入门树形结构
c++·
冯汉栩11 小时前
Swift Control View,Label渐变颜色(源码)
开发语言·ios·swift
Titan202411 小时前
Linux网络基础知识
linux·服务器·网络·c++·学习
从小就看凹凸曼^o^12 小时前
Python基础5 - 字典与集合:(1)字典
开发语言·python