读书人

有关 main:处理命令行选项 的有关问题

发布时间: 2012-05-07 12:40:40 作者: rapoo

有关 main:处理命令行选项 的问题。
书上面比较简略,能否解释一下这个部分的具体内涵?

比如说:
int main(int argc,char **aggv){}的形参一定要是这种格式吗?

int main(int val1 = 1,int val2 = 2)
{
return val1+val2;
}

int main(int val1,int val2)
{
cin>>val1>>val2;
return val1+val2;
}
有什么区别?

呵呵,没看懂书啊,求指导。

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

int argv;

char *argv[];或写成:
main (int argc,char *argv[])

   由于main函数不能被其它函数调用, 因此不可能在程序内部取得实际值。那么,在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从操作系统命令行上获得的。当我们要运行一个可执行文件时,在DOS提示符下键入文件名,再输入实际参数即可把这些实参传 送到main的形参中去。


  DOS提示符下命令行的一般形式为: C:/>可执行文件名 参数 参数……; 但是应该特别注意的是,main 的两个形参和命令行中的参数在
位 置上不是一一对应的。因为,main的形参只有二个,而命令行中的参数个数原则上未加限制。argc参数表示了命令行中参数的个数(注意:文件名本身也算 一个参数),argc的值是在输入命令行时由系统按实际参数的个数自动赋予的。例如有命令行为: C:/>E6 24 BASIC dbase FORTRAN由于文件名E6 24本身也算一个参数,所以共有4个参数,因此argc取得的值为4。argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处 理)的首地址。 指针数组的长度即为参数个数。数组元素初值由系统自动赋予。

[解决办法]
main函数的形参和普通函数的形参没有什么区别。
只所以引入命令行,是给程序运行加一些条件。比如:
project.exe Debug,
就把Debug参数传进main函数里了,你的程序就可以根据这个Debug参数做很多特殊处理

读书人网 >C++

热点推荐