main函数的参数(一)
C措施最大的特点就是所有的措施都是用函数来装配的。main()称之为主函数,是所有程
序运行的进口。其余函数分为有参或无参两种,均由main()函数或其它一般函数挪用,若挪用
的是有参函数,则参数在挪用时通报。
main()
{
…
y1=f1(x1,x2);
…
}
f1(int a,int b)
{
….
Y2=f2(x3,x4);
….
}
f2(int m,int n)
{
….
…..
}
在前面课程的进修中,对main()函数始终作为主调函数处理惩罚,也就是说,答允main()挪用
其它函数并通报参数。事实上,main()函数既可以是无参函数,也可以是有参的函数。对付有
参的形式来说,就需要向其通报参数。可是其它任何函数均不能挪用main()函数。虽然也同样
无法向main()函数通报,只能由措施之外通报而来。这个详细的问题奈何办理呢?
我们先看一下main()函数的带参的形式:
main(argc,argv)
int argc,char *argv[];
{
…..
}
从函数参数的形式上看,包括一个整型和一个指针数组。当一个C的源措施颠末编译、链接后,会生成扩展名为.EXE的可执行文件,这是可以在操纵系统下直接运行的文件,换句话说,就是由系统来启动运行的。对main()函数既然不能由其它函数挪用和通报参数,就只能由
系统在启动运行时通报参数了。
在操纵系统情况下,一条完整的运行呼吁应包罗两部门:呼吁与相应的参数。其名目为:
呼吁参数1参数2….参数n¿
此名目也称为呼吁行。呼吁行中的呼吁就是可执行文件的文件名,其后所跟参数需用空格脱离,并为对呼吁的进一步增补,也等于通报给main()函数的参数。
呼吁行与main()函数的参数存在如下的干系:
设呼吁行为:program str1 str2 str3 str4 str5
个中program为文件名,也就是一个由program.c经编译、链接后生成的可执行文件program.exe,其后各跟5个参数。对main()函数来说,它的参数argc记录了呼吁行中呼吁与参数的个数,共6个,指针数组的巨细由参数argc的值抉择,即为char*argv[6],指针数组的取值环境如图6-15所示。
数组的各指针别离指向一个字符串。该当引起留意的是吸收到的指针数组的各指针是从呼吁行的开始吸收的,首先吸收到的是呼吁,其后
才是参数。
下面用实例来说明带参数的main()函数的正确利用。
[例6-29] 操作图形库函数绘制一个变革的环。它是把一个半径为R 1的圆周分成n份,然
后以每个平分点为圆心,以R s为半径画n个圆(关于作图的具体理论本课本第9章第1节作了专
门先容,这里只作简朴阐明)。操作m a i n ( )函数的带参数形式,我们可以从键盘以呼吁行的方
式输入R 1和R s及屏幕的配景致。
#include <graphics.h> /*包括图形库函数的头文件* /
#include <math.h>
#define pi 4.1415926
m a i n ( a r g c , a r g v )
int argc;char *argv[]; /* 界说带参数的m a i n ( ) * /
{
int x,y,r1,rs,color;
double a;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"..\\bgi ")启;/动*图形事情方法*/
r1=atoi(argv[1]);/*计较基本圆半径*/
rs=atoi(argv[2]);/*计较同心圆半径*/
color=atoi(argv[3]);/*配景致*/
cleardevice();/*排除图形屏幕*/
setbkcolor(color);/*配置配景致*/
setcolor(4);/*配置图形显示颜色*/
for(a=0;a<=2*pi;a+=pi/18)/*绘制同心圆*/
{
x=r1*cos(a)+320;
y=r1*sin(a)+240;
circle(x,y,rs);/*以圆心坐标为x、y,半径为rs画圆*/
}
getch();/*期待按键继承*/
close graph();/*封锁图形事情方法*/
}
若措施名为L6-29.c,经编译、连结生成可执行文件L6-29.exe。在操纵系统的情况下运行
措施,呼吁行方法为:
l6-29 40 20 3
则呼吁行与main()函数的参数有如图6-16所示的关
系。