说说main()函数的参数问题

      从刚刚开始学习C/C++程序设计的时候就知道main()函数是程序的入口,对于教材上的格式化描述int main(int argc, char *argv[])也是总是从来不问为什么的简写为 int main();现在使用linux环境编程才有机会知道了其中一点点早就该知道的秘密:main()的参数问题。

 

     由于main函数不能被其他的函数调用,因此main函数的参数不可能在程序的内部取得实际值的。实际上main函数的参数值是从操作系统命令行中获取的。当运行一个可执行文件时,在linux命令行下键入文件名,在输入实际参数即可把这些参数传送给main的形参中去。

      命令行的一般形式为:

      可执行文件名 参数 参数 ...........

   

     应该特别注意的是,main的两个形参和命令行中的参数在位置上不是一一对应的,因为main的形参只有两个,而命令行中的参数个数原则上未加限制。argc参数表示了命令行中的参数个数(注意:可执行文件名本身也是一个参数),argc的值也是在输入命令行时由系统按照实际参数的个数自动赋予的。例如有命令行为:

  gcc -o a.out a.c

 

      由于文件名gcc本身也算是一个参数,所以上述的命令行中一共有四个参数,因此argc取得值为4。而argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按照字符串处理)的首地址。指针数组的长度就是参数argc的值。数组元素初值由系统自动赋予。在上面的命令中argv数组第一个元素指向的字符串为“gcc”,第二个元素指向的字符串为“-o”,第三个元素指向的字符串为“a.out”,第四个元素指向的字符串为“a.c”.

 

此外main函数返回类型一般都是int,返回值传递给程序的激活者(如操作系统),如果main函数的最后没有写return 语句的话,gcc会自动在生成的目标文件中加入:

                        return 0;

表示程序正常的退出。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值