C++ main()函数及其参数

1、首先,想想C/C++在main函数之前和之后会做些什么?

我们看看底层的汇编代码:

__start:

     :
     init stack;
     init heap;
     open stdin;
     open stdout;
     open stderr;
     :
     push argv;
     push argc;
     call _main; (调用 main)
     :
     destory heap;
     close stdin;
     close stdout;
     close stderr;
     :

     call __exit;

我们可以看到main函数也只是其中的一个函数调用而已。

在调用main函数之前,会先进性初始化栈,堆,打开标准输入,输出,错误流,把参数压栈。还有一些全局变量、对象和静态变量、对象的空间分配和赋初值。

在调用main函数之后,要销毁堆内存,关闭标准输入,输出,错误流。

这些都是编译器帮助我们自动生成的,帮助我们启动main函数。

2、main()函数及其参数

C++标准允许主函数main()有或没有参数列表。 您能在主函数main()中使用一个或更多的参数。 如下是一些惯例:
int main(int argc, char *argv[])
第一个参数argc,指明有多少个参数将被传递给主函数main(),真正的参数以字符串数组(即第2个参数argv[])的形式来传递。每一个字符串均有自己意思。在这句法上面, 记住, argc代表参数的数量, main()函数本身是在索引0为的第一参数。 所以, argc总是至少为1 。它的总数是从argv列阵的元素数目。 这意味着, argv[0]的值是至关重要的。 如果用户在控制台环境中程序名称后键入含参数的指令, 那么随后的参数将传递给argv[1]。

例如:在vs2015中构建代码,

#include <stdio.h>
int main(int argc, char *argv[])
{
	int i;
	for (i = 0; i < argc; i++)
		printf("Argument %d is %s.\n", i, argv[i]);
	return 0;
}

保存并编译后,程序名称为---vs2015之main参数测试,在cmd中键入:

简单说,这两个就是用于接受参数和记录参数信息的。

因为在LINUX或DOS中, 使用命令后面一般都加上参数等

3、C/C++中如何在main()函数之前执行一条语句?

(1)在C++中,利用全局变量和构造函数的特性,通过全局变量的构造函数执行

#include <Iostream>
using namespace std;

class TestClass
{
        public:
                TestClass();
};

TestClass::TestClass()
{
        cout<<"TestClass"<<endl;
}

TestClass Ts;//定义个全局变量,让类里面的代码在main之前执行

int main()
{
        cout<<"main"<<endl;

        return 0;
}

执行结果:

(2)、全局变量的赋值函数

#include <iostream>
using namespace std;

int foo(void);
int i = foo();

int foo(void)
{
	cout << "before main" << endl;
	return 0;
}

int main(void)

{
	cout << "i‘m main" << endl;
}

执行结果:


(3)、指定入口点,入口点中调用原来的入口点

时间: 2024-08-28 03:08:41

C++ main()函数及其参数的相关文章

c语言:使用main函数的参数,实现一个整数计算器

/* 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数, 第一个参数"-a"选项执行加法,"-s"选项执行减法, "-m"选项执行乘法,"-d"选项执行除法,后面两个参数为操作数. */ #include<stdio.h> #include<stdlib.h> int my_calculator(char *p,int num1,int num2)//calculator表示计算器 {

C语言中main函数的参数详解

main函数的定义形式  main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv.所以C99标准中规定只有以下两种定义方式是正确的: int main(void) //无参形式 int main(int argc, char *argv[]) //有参形式 当然有参形式可以进行演变,所以下面的写法也是正确的(同时变量名是可以更换的): int main(int argc, char **a

main函数的参数

在一些教材中,我们常常可以看到main函数的形式如下:int main(int argc,char* argv[]),这两个参数是干什么的呢?如何传递给main函数呢? 1.含义 首先必须知道,main函数是由系统调用的,在调用的同时传递参数. 例如,在文件file1.c中,有如下内容: #include <stdio.h> int main(int argc,char* argv[]) { printf("exe executed!\n"); } 经过编译后,在工程目录的

main()函数的参数

main()函数的参数: main(int argc,char *argv[],char *envp[]); argc: 表示包含文件名在内的命令行参数的个数. argv[]是指针数:里面存放的全是char *类型,最后放一个NULL字符结尾.argv[]存放的是包含文件名在内的所有命令行参数的首地址. envp[]也是一个指针数组:里面存放的是环境变量,最后以NULL结束. 环境变量:是操作系统的变量.分为用户环境变量和系统环境变量,环境变量相当于给系统或用户设置一些变量.例如:Path变量指

C 中 main 函数的参数

      看到不同的人写出的 C 或者 C++ 程序时,可能会出现不一样的 main 函数的定义,下面的几种定义方式都是对的: int main(void) int main(int argc) int main(int argc, /*const*/ char** argv) int main(int argc, /*const*/ char** argv, /*const*/ char** enviorn)       这几种方式中,第三种方式是最常用的.那么,这些参数代表着什么呢?下面,

C++ main函数的参数

C++的main函数可以没有输入参数,也可以有输入参数,而且只能有两个参数,习惯上coding如下: int main(int argc, char* argv[]) 或者 int main(int argc, char** argv) 其中,argc = argument count :表示传入main函数的数组元素个数,为int类型,而 argv = argument vector :表示传入main函数的指针数组,为char**类型.第一个数组元素argv[0]是程序名称,并且包含程序所在

(转)C++ main函数中参数argc和argv含义及用法

原博地址:https://blog.csdn.net/dcrmg/article/details/51987413 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个: 简单用法示例,新建工程键代码: #include <iostr

main函数的参数(int argc,char *argv[])

一般的main函数都是不带参数的,因此main 后的括号都是空括号.实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv.因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组.加上形参说明后,main函数的函数头可以写为: main (int argc,char *argv[])

C++ main函数中参数argc和argv含义及用法

argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个: 第一个参数argc用来存放命令行参数的个数第二个参数argv是指针数组,它是用来存放命令行中各个参数和命令字的字符串的 具体可看:C++ main函数中参数argc和argv含义