main()函数:
一个程序,无论复杂或简单,总体上都是一个函数,这个函数就是“main()函数”(主函数),主函数意味着建立一个独立进程,且该进程成为了程序的入口,对其他各函数进行调用。(主函数肩负着入口和出口的重任)
main函数在程序中大多数是必须存在的,但是依然有例外情况,比如windows编程中可以编写一个动态链接库(dll)模块,这是其他windows程序可以使用的代码。由于DLL模块不是独立的程序,因此不需要main函数。
主函数是一个特殊的函数,不管把它放在代码的什么位置,每个程序的运行都是从主函数开始的。
每个程序有且只能有一个主函数。
带有参数的main()函数:
int main(int argc,char *argv[])
{
语句;
}
int main ( int argc , char*argv[] )
//整数类型主函数(整数类型统计参数个数,字符类型 *数组指针至字符[])
argc(argument count) argv(argument value)
main()函数不能由其它函数调用或传递参数,而只能由系统在启动该程序时传递参数。
设命令行为:programstr1 str2 str3 str4 str5
其中program为文件名,也就是一个由program.cpp经编译、链接后生成的可执行文件program.exe,其后跟5个参数。对main()函数来说,它的参数argc记录了命令行中命令与参数的个数,共6个。指针数组的大小由参数argc的值决定,这里即为char *argv[6],指针数组的取值情况如图所示。
数组的各指针分别指向一个字符串。应当引起注意的是接收到的指针数组的各指针是从命令行开始接收的,首先接收到的是命令,其后才是参数。
#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
int count;
cout<<"The command line has "<<argc-1<<" arguments."<<endl;
for(count=1;count<argc;++count)
cout<<count<<":"<<argv[count]<<endl;
return 0;
}
编译运行,在命令行输入c Ilove you 回车,下面是从命令行运行该程序的结果:
The command line has 3 arguments:
1:I
2:love
3:you
从本例可以看出,程序从命令行中接受到4个字符串(包括程序名),并将它们存放在字符串数组中,其对应关系:
argv[0] ------> c(程序名)
argv[1] ------> I
argv[2] ------> love
argv[3] ------> you
至于argc的值,也即是参数的个数,程序在运行时会自动统计。
输入 c "I love you." "I’m too."。程序运行结果:
The command line has 2 arguments:
1:I love you.
2:I’m too.
其对应关系:
argv[0] ------> c(程序名)
argv[1] ------> I love you.
argv[2] ------> I’m too.